現在、ディープラーニングを用いた画像分類をやっています。
GPUを用いて学習を行いcpuにモデルを戻してからserializerのnpzを使ってモデルを保存しました。
ちなみにモデルにはNINを用いています。
早速保存したモデルを読み込んで分類とその分類したクラスのパーセンテージを表示させるようにしました。
ですが、同じ画像なのに毎回違った値が返ってきます。
例えばクラスの分類があっていて、そのクラスのパーセンテージが違う場合はまあいいのですが、クラス分類まで変わってしまうことがあります。モデルは変わっていないはずなのにこういうことがあり得るのでしょうか?
関係がありそうな部分だけコードを載せておきます。
python
1#モデルの作成 2model = NIN(5) 3optimizer = optimizers.Adam() 4optimizer.setup(model) 5cuda.get_device(gpu_device).use() 6model.to_gpu(gpu_device) 7 8 9#モデルの保存 10model.to_cpu() 11serializers.save_npz('ファイル名.npz', model) 12 13 14#確率変換 15def softmax(a): 16 c = np.max(a) 17 exp_a = np.exp(a-c) 18 sum_exp_a = np.sum(exp_a) 19 y = exp_a / sum_exp_a 20 return y 21 22 23#予測 24model = NIN(n_class) 25serializers.load_npz('モデルのファイルパス', model) 26x = Variable(img_lst[0:1]) 27y = model(x) 28test = y.data[0] 29test = test.tolist() 30y = softmax(y.data[0])
回答3件
あなたの回答
tips
プレビュー