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

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

学習済みGeneraterのテスト

DCGANで学習させたGeneraterを用いてtestすることが目的

 

python test3.py –g 0 –i mimosa2_0001 -m__history/mimosa_0001/gen_iter_131250.npzで実行した。

 

エラー文

ValueError: numpy and cupy must not be used together

type(W):<class ‘cupy.core.ndarray’ >, type(x):<class ‘numpy.ndarray’>

 

Wとxの型が違うらしい。

 

-------------------------------------------------------------------------------------------------------

・type()関数 引数に指定したオブジェクトの型を返す。

Ex.

myvar = 1234 →print(type(myvar))→ <type ‘int’>

・isinstance()関数 引数が二つでbool型(TorF)で返す

-------------------------------------------------------------------------------------------------------

試行-1

gpu 使用時にcpを使うために?net.pyのmake_hiddenメソッドにxp = np if 0 <= gpu else cp の一文を追加

z = gen.make_hidden(batchsize=1, gpu=args.gpu) args.gpuを引数に追加

 

net.py でcupyを定義

try:

    import cupy as cp

except Exception as e:

    cp = None

 

結果 SystemErrorになった。

 

-------------------------------------------------------------------------------------------------------

enumerate関数 要素のインデックスと要素の両方を同時に取得

Ex.

for i, v in enumerate(['tic', 'tac', 'toe']):

...     print i, v

0 tic

1 tac

2 toe

-------------------------------------------------------------------------------------------------------

 

 

試行-2

 

save_imageメソッドにfor i, img_data in enumerate(data):を追加し、img_dataに画像データが格納されるように変更し実行。

 

結果 save_imgメソッド実行中におちた。落ちるまで3分くらいかかった。

エラー文

SystemError: <class ‘NotImplementedError’>returned a result with an error set

valiable.pyの1117行目で‘NotImplementedErrorエラーが起きているみたいな。

 

-------------------------------------------------------------------------------------------------------

class NotImplementedError 実装されていない機能が呼び出されたときに発生する

-------------------------------------------------------------------------------------------------------

 

試行-3

test.pyのsave_imageメソッドに

xp = np if gpu <= 0 else cp追加

val_min = np.min(img_data)

val_max = np.max(img_data)

 

val_min = xp.min(img_data)

val_max = xp.max(img_data)

 

gpu使用時にcupyで実行したいので、test.pyにもファイル上部に

try:

    import cupy as cp

except Exception as e:

    cp = None

を追加し、メソッドにgpuの引数を追加。

結果 また3分くらいして落ちた。

 

 

生成された画像データをNumpy配列化する方法

x_fake = chainer.cuda.to_cpu(x_fake.data)

x_fakeだとchainer専用のVariable型なので、.dataを付けることでnumpy型の配列にする

 

モデルの学習がなく画像を生成するだけなので今回はCPUで充分。

----------------------------------------------------------------------------------------------------------------------

 可変長変数 *arg や **kwarg

*arg 関数を使う際に引数としてあるものは全部受け取って,番号を付ける」ということをしています.受け取り方はタプルとして受けとります

仮引数でつかうとすべての引数を受け取る。*が本体

 

**kwarg 「*」が2個付いた **kwarg は辞書型の可変長引数を表しています

渡す引数をkey=valueとして認識する。 引数(a=1), 入力Kwarg, [‘a’] 出力1