電脳ヨーグルト(技術ブログ)

勉強したことを淡々とメモしていきます

GANで生成した画像をベクトル化するVevtorizer実装

VEVTORIZER実装続き

 

エラー

AttributeError: 'VectorizerUpdater' object has no attribute 'vec_optimizer'

vec_optimizerではなくget_optimizer修正

 

エラー

TypeError: 'type' object cannot be interpreted as an integer

 

z = Variable(xp.asarray(gen.make_hidden(batchsize, self.device)))#100次元ベクトルの生成

x_fake = gen(z)#3次元の偽画像をGeneraterで生成

vec_array = vec(x_fake)#偽画像をVectorizerで読み込み配列化

 

100次元の乱数ベクトルを生成するところをHiddenDatasetsというClassでデータセットとしてまとめていたが、よくわからなくなったのでVectorizerUpdater()に乱数ベクトルを生成する関数を追加した。

 

引数とかもよくわからなくなったので、

def __init__に

n_hidden = 100

self.n_hidden = n_hiddenを無理やり追加して初期値を設定した。

 

 

net.pyに作ったVectorizerのモデルは、Descripterのモデルの全結合層のところを変えて、出力が100次元になるようにした。

 

 

make_hiddenメソッドを二か所で用いて、二種類の乱数配列を生成していた。

なのでupdaterを大幅改変してデータセットで作った乱数配列を作るようにした。

 

二乗誤差関数

chainer.functions.mean_squared_error(random_array, vec_array)

 

random_arrayとvec_arrayの配列が[1,100,1,1]と[1,100]で誤差の計算が行えずにエラーが出た。

なのでデータセットで生成されるrandom_arrayの型を変更して型を合わせたらエラーが治った。