我一直在使用以下功能API来进行CNN的图像分类任务:
def create_model(X_train, X_test):
visible = Input(shape=(X_train.shape[0], X_train.shape[1], 1))
conv1 = Conv2D(32, kernel_size=4, activation='relu')(visible)
hidden1 = Dense(10, activation='relu')(pool2)
output = Dense(1, activation='sigmoid')(hidden1)
model = Model(inputs = visible, outputs = output)
model.compile(loss='binary_crossentropy',
optimizer='rmsprop',
metrics=['accuracy'])
return model
X_tr = np.reshape(X_train, (1,X_train.shape[0], X_train.shape[1], 1))
X_te = np.reshape(X_test, (1,X_test.shape[0], X_test.shape[1], 1))
model = create_model(X_train, X_test)
model.fit(X_tr, y_train, validation_split = 0.1, batch_size=10, epochs=10, verbose = 1, callbacks=[EarlyStopping(patience=5,verbose=1)])
这里,X_train
是一个 7942*6400 的列表,而 y_train
是一个包含 7942 个标签的一维列表。
错误信息:
ValueError: 检查目标时出错:期望 dense_2 具有 4 个维度,但得到的数组形状为 (7942, 1)
作为一个对函数式 API 不太熟悉的新手,可能出了什么问题呢?
X_train
包含图像,那么这6400个值在图像中是如何分布的?高度、宽度和通道数是多少? - Daniel Möller