学習済み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