我正在嘗試與Keras一起構建我的第一個神經網絡。我沒有經驗,我似乎無法弄清楚爲什麼我的維度不對。我無法從他們的文檔中弄清楚這個錯誤是在抱怨什麼,甚至是什麼層造成的。卷積層錯配Keras維數
我的模型需要一個32byte的數字數組,並且應該在另一邊給出一個布爾值。我想在輸入字節數組上進行一維卷積。
arr1是32byte數組,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)
謝謝!我明白了爲什麼我現在有維度問題。我不明白爲什麼卷積步驟丟失一個字節?在我看來,卷積橫跨整行,並且對於每個x,它將自身和其他x進行卷積。所以在我腦海中的代碼中,這就像一個嵌套的for循環遍歷相同的數組兩次 –
我編輯了我的答案,更多關於這方面的信息:) –