私は最初のニューラルネットワークを構築するためにケラスを使いこなそうとしています。私は経験がなく、なぜ私の次元が正しくないのか分かりません。私は、このエラーが何を訴えているのか、それを引き起こしている層さえ、彼らのドキュメントから把握することはできません。畳み込みレイヤーミスマッチのケラス次元性
私のモデルは、32バイトの数字の配列を取り、反対側にブール値を与えることになっています。入力バイト配列に1D畳み込みが必要です。
arr1は32バイトの配列、arr2はブール値の配列です。
inputData = np.array(arr1)
inputData = np.expand_dims(inputData, axis = 2)
labelData = np.array(arr2)
print inputData.shape
print labelData.shape
model = k.models.Sequential()
model.add(k.layers.convolutional.Convolution1D(32,2, input_shape = (32, 1)))
model.add(k.layers.Activation('relu'))
model.add(k.layers.convolutional.Convolution1D(32,2))
model.add(k.layers.Activation('relu'))
model.add(k.layers.convolutional.Convolution1D(32,2))
model.add(k.layers.Activation('relu'))
model.add(k.layers.convolutional.Convolution1D(32,2))
model.add(k.layers.Activation('relu'))
model.add(k.layers.core.Dense(32))
model.add(k.layers.Activation('sigmoid'))
model.compile(loss = 'binary_crossentropy',
optimizer = 'rmsprop',
metrics=['accuracy'])
model.fit(
inputData,labelData
)
形状のプリントの出力され (1000年、32、1)及び(1000)
私は、受信エラーがある:
Traceback (most recent call last): File "cnn/init.py", line 50, in inputData,labelData File "/home/steve/Documents/cnn/env/local/lib/python2.7/site-packages/keras/models.py", line 863, in fit initial_epoch=initial_epoch) File "/home/steve/Documents/cnn/env/local/lib/python2.7/site-packages/keras/engine/training.py", line 1358, in fit batch_size=batch_size) File "/home/steve/Documents/cnn/env/local/lib/python2.7/site-packages/keras/engine/training.py", line 1238, in _standardize_user_data exception_prefix='target') File "/home/steve/Documents/cnn/env/local/lib/python2.7/site-packages/keras/engine/training.py", line 128, in _standardize_input_data str(array.shape)) ValueError: Error when checking target: expected activation_5 to have 3 dimensions, but got array with shape (1000, 1)
ありがとうございました!なぜ私は今次元の問題を抱えていたのか分かります。畳み込みステップが1バイトを失うのはなぜですか?私の心の中では、畳み込みが行を横切って行き、各xについてそれはそれ自身と他のすべてのxとそれを畳み込んだ。だから、私の心のコードでは、これは同じ配列を2回繰り返すネストされたforループのようだった –
私はこのことについて私の答えを編集しました:) –