[英]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.