実験記録 e19098ab
StarGAN (Conditional GAN) の実装にあたって、Discriminator にクラス分類できるだけの表現力があることを予め示したい。
以前の実験での話者分類精度の低さはある程度改善されたが、もう少し精度を上げたい。
今回は、StarGAN 論文での Discriminator 実装に準拠した classifier を実験する。
モデル
graph TD
input("«Input»<br/>Spectrogram<br/>1 x 256 x 256<br/>[0, 1]")
conv1[Convolution<br/>n: 64, ksize: 4, stride: 2, padding: 1<br/>BatchNormalization<br/>ReakyReLU]
conv2[Convolution<br/>n: 128, ksize: 4, stride: 2, padding: 1<br/>BatchNormalization<br/>ReakyReLU]
conv3[Convolution<br/>n: 256, ksize: 4, stride: 2, padding: 1<br/>BatchNormalization<br/>ReakyReLU]
conv4[Convolution<br/>n: 512, ksize: 4, stride: 2, padding: 1<br/>BatchNormalization<br/>ReakyReLU]
conv5[Convolution<br/>n: 1024, ksize: 4, stride: 2, padding: 1<br/>BatchNormalization<br/>ReakyReLU]
conv6[Convolution<br/>n: 2048, ksize: 4, stride: 2, padding: 1<br/>BatchNormalization<br/>ReakyReLU]
subgraph Output
h("2048 x 4 x 4")
clz_speaker[Convolution<br/>n: 1421, ksize: 4, stride: 1, padding: 0<br/>softmax]
clz_birth[Convolution<br/>n: 53, ksize: 4, stride: 1, padding: 0<br/>softmax]
clz_sex[Convolution<br/>n: 2, ksize: 4, stride: 1, padding: 0<br/>softmax]
y_speaker("«Output»<br/>Speaker<br/>1421")
y_birth("«Output»<br/>BirthPlace<br/>53")
y_sex("«Output»<br/>Sex<br/>2")
end
input --> conv1
conv1 --> |64 x 128 x 128| conv2
conv2 --> |128 x 64 x 64| conv3
conv3 --> |256 x 32 x 32| conv4
conv4 --> |512 x 16 x 16| conv5
conv5 --> |1024 x 8 x 8| conv6
conv6 --> h
h --> clz_speaker
clz_speaker --> y_speaker
h --> clz_birth
clz_birth --> y_birth
h --> clz_sex
clz_sex --> y_sex
学習パラメータ
optimizer: RMSprop
learning rate: 1e-5
minibatch size: 10
epoch: 1000
結果
学習時間: 16.10 時間
感想
話者を十分識別できるだけの表現空間があるといいっていいと考える。
出身地の識別が(話者と関連性があるにも関わらず)あまりうまくいっていない点が不可解。