こんにちは。
以前ここでお世話になりました江田です。
今日は、softmax_cross_entropyで出力されてしまうエラーの解決方法についてお聞きしたく、投稿させて頂きました。
またしても初歩的な質問となってしまいますが、どうぞお付き合い願います。
出力層を0と1の2つのノードにし、クラス分類をしたいのですが、
Traceback (most recent call last):
File "class.py", line 133, in <module>
loss, acc = forward(x_batch, y_batch)
File "class.py", line 89, in forward
return F.softmax_cross_entropy(y, t), F.accuracy(y, t)
File "build/bdist.linux-x86_64/egg/chainer/functions/softmax_cross_entropy.py", line 149, in softmax_cross_entropy
File "build/bdist.linux-x86_64/egg/chainer/function.py", line 164, in __call__
File "build/bdist.linux-x86_64/egg/chainer/function.py", line 191, in _check_data_type_forward
File "build/bdist.linux-x86_64/egg/chainer/functions/softmax_cross_entropy.py", line 28, in check_type_forward
File "build/bdist.linux-x86_64/egg/chainer/utils/type_check.py", line 457, in expect
File "build/bdist.linux-x86_64/egg/chainer/utils/type_check.py", line 428, in expect
chainer.utils.type_check.InvalidType: Expect: in_types[1].ndim == in_types[0].ndim - 1
Actual: 2 != 1
というエラーが出てしまいます。
このときの正解データtは、
[[1 0]
[1 0]
[1 0]
[1 0]]
という正解の方に1を立てた形で入れていたので、正解の値(0か1)のみで再度挑戦してみましたが、同じエラーが出てしまいました。
正解データは、txtファイルに0\n1\n0\n...というように書かれており、それをnp.loadtxtで読み込んでいます。
学習部分のプログラムはmnistの例と同じように書き、mnistではうまく動いているので、
正解データの作り方、入力の仕方が間違っているために2次元になってしまうのかなと考えたのですが…。
ご助言頂けたら幸いです。
どうぞ宜しくお願い申し上げます。