ChainerでCNN Autoencoderを作ろうとしています。このページを参考にコードを書いたのですが、lossを出力するとnanと表示されます。どこが問題なのでしょうか。
python
1import sys,os,cv2 2import numpy as np 3import matplotlib.pyplot as plt 4import chainer 5import chainer.links as L 6import chainer.functions as F 7from chainer import cuda, Variable, optimizers, Chain, datasets 8 9#Define CNN Autoencoder 10class CNNAutoencoder(Chain): 11 def __init__(self): 12 super().__init__() 13 with self.init_scope(): 14 self.conv = L.Convolution2D(None,2,5) 15 self.dcnv = L.Deconvolution2D(None,3,5) 16 17 def __call__(self,x): 18 h = F.relu(self.conv(x)) 19 h = F.relu(self.dcnv(h)) 20 21 return h 22 23def main(): 24 train, _ = chainer.datasets.get_cifar10() 25 26 model = CNNAutoencoder() 27 optimizer = optimizers.SGD(lr=0.001).setup(model) 28 29 for i in range(0,10): 30 x = Variable(np.array([train[i][0]],dtype=np.float32)) 31 t = model(x) 32 loss = F.mean_squared_error(t,x) 33 loss.backward() 34 optimizer.update() 35 model.cleargrads() 36 37 print(loss.data) 38 39 40if __name__ == "__main__": 41 main()
出力結果は次のようになりました。
0.2024328
/home//.virtualenvs/newst/lib/python3.5/site-packages/chainer/functions/activation/relu.py:40: RuntimeWarning: invalid value encountered in maximum
return utils.force_array(numpy.maximum(x, 0, dtype=x.dtype)),
/home//.virtualenvs/newst/lib/python3.5/site-packages/chainer/functions/activation/relu.py:99: RuntimeWarning: invalid value encountered in greater
y = (self.b > 0) * inputs[0]
nan
nan
nan
nan
nan
nan
nan
nan
nan
追記
このURLでは学習率を下げるとうまく行くとありますが、学習率を下げても結果は変わりませんでした。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/18 03:35
2018/12/18 05:37