[英]ValueError: Error when checking input: expected conv2d_input to have 4 dimensions, but got array with shape
[英]ValueError: Error when checking input: expected conv2d_79_input to have 4 dimensions, but got array with shape (99, 4457, 4)
這是使用一種熱編碼的RNA序列的二進制分類CNN模型。 數據集已經是一種熱編碼,我的X形狀是(99,4457,4)
我嘗試使用以下方法增加尺寸:
arr4d = np.expand_dims(X, 0)
這給了我以下形狀:(1,99,4457,4)
但是后來我收到另一個錯誤:
ValueError:檢查目標時出錯:預期density_64的形狀為(4,),但數組的形狀為(1,)
我也嘗試了其他幾種方法,但是我只是做的不正確。 任何幫助深表感謝。
X = np.reshape(X2, (X2.shape[0],maximum,4))
# In[62]:
def build_cnn():
model = Sequential()
# Multiple convolution operations to detect features in the images
model.add(Conv2D(32,kernel_size=3,activation='relu',input_shape=(99,4457,4)))
model.add(BatchNormalization())
model.add(Conv2D(32,kernel_size=3,activation='relu')) # no need to specify shape as there is a layer before
model.add(BatchNormalization())
model.add(Conv2D(32,kernel_size=5,strides=2,padding='same',activation='relu'))
model.add(BatchNormalization())
model.add(Dropout(0.4)) # reduce overfitting
model.add(Conv2D(64,kernel_size=3,activation='relu'))
model.add(BatchNormalization())
model.add(Conv2D(64,kernel_size=3,activation='relu'))
model.add(BatchNormalization())
model.add(Conv2D(64,kernel_size=5,strides=2,padding='same',activation='relu'))
model.add(BatchNormalization())
model.add(Dropout(0.4)) # reduce overfitting
# Flattening and classification by standard ANN
model.add(Flatten())
model.add(Dense(4, activation='relu'))
model.add(BatchNormalization())
model.add(Dropout(0.4))
model.add(Dense(4, activation='softmax'))
model.compile(loss='categorical_crossentropy',
optimizer='adam',
metrics=['accuracy'])
return model
# In[63]:
model = build_cnn()
model.fit(X, y, batch_size=64, epochs=16)
這給了我以下形狀:(1、99、4457、4)這絕對是錯誤的形狀。 圖像通常具有(batch_size,通道,高度,寬度)。 在用kernel_size = 3卷積后,什么是3x3映射,形狀將是(1,32,4457-2,4-2),並且無法在下一個conv2d中處理
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.