[英]Python (Keras): Value Error: Error when checking input
我正在嘗試使用gensim庫生成的單詞向量訓練CNN。 以數字形式生成所有數據后,當出現以下錯誤時,我嘗試使用Keras將其傳遞給CNN模型:
ValueError:檢查輸入時出錯:預期conv2d_1_input具有4個維,但是數組的形狀為(20000,250,50)
我已經在這個問題上搜索了幾個小時,而針對相似/相同問題發布的所有解決方案都無法為我解決此錯誤。 誰能看到我輸入尺寸出現問題的地方嗎? 我生成了一些隨機的numpy數據來重新創建錯誤:
import numpy as np
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import Convolution2D, Flatten, Dropout
from keras.layers.embeddings import Embedding
from keras.preprocessing import sequence
from keras.callbacks import TensorBoard
t = np.random.rand(20000,250,50)
l = np.random.rand(20000,1)
embedding_vecor_length = 50
net = Sequential()
net.add(Convolution2D(64, 3,input_shape=(1,250,50),
data_format='channels_first'))
# Convolutional model (3x conv, flatten, 2x dense)
net.add(Convolution2D(32,(3), padding='same'))
net.add(Convolution2D(16,(3), padding='same'))
net.add(Convolution2D(8,(3), padding='same'))
net.add(Flatten())
net.add(Dropout(0.2))
net.add(Dense(180,activation='sigmoid'))
net.add(Dropout(0.2))
net.add(Dense(1,activation='sigmoid'))
net.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
tensorBoardCallback = TensorBoard(log_dir='./logs', write_graph=True)
net.summary()
net.fit(t, l, epochs=3, callbacks=[tensorBoardCallback], batch_size=64)
卷積使用4維。 考慮到您正在使用“ channels_first”:
您的輸入缺少渠道。
t = np.random.rand(20000,1,250,50)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.