我在构建Keras模型时,不知道应该如何设置输入层的形状。我的模型使用了1080个向量,每个向量有12288个样本。
我的输入形状如下:
X_train shape: (12288, 1080)Y_train shape: (6, 1080)X_test shape: (12288, 120)Y_test shape: (6, 120)layers_dims =[12288,64,64,64,6]
我的神经网络如下:
def net_model(X_train, Y_train, X_test, Y_test, batch_size=32): model.add(keras.layers.InputLayer(input_shape=(layers_dims[0],))) for l in range(1,len(layers_dims)-2): model.add(keras.layers.Dense(layers_dims[l],activation=activation)) if dropout: model.add(dropout(keep_prob[l])) model.add(keras.layers.Dense(layers_dims[-1],activation=keras.activations.softmax)) model.compile(loss=keras.losses.categorical_crossentropy,optimizer=optimizer, metrics=[keras.metrics.categorical_accuracy]) model.fit(X_train,Y_train,batch_size=batch_size, epochs=epochs) result_train = model.evaluate(X_train,Y_train) result_test = model.evaluate(X_test,Y_test) return result_train,result_testresult_train,result_test = net_model(X_train,Y_train,X_test,Y_test)
我遇到了以下错误:
ValueError: Error when checking input: expected input_10 to have shape (12288,) but got array with shape (1080,)
在再次查阅文档后,我尝试使用(1080,)作为输入形状,但这也没有解决问题。
ValueError: Error when checking target: expected dense_12 to have shape (6,) but got array with shape (1080,)
我错过了什么?
回答:
训练数据和标签的形状应该分别为(num_samples,num_features)
和(num_samples, num_labels)
。因此,X
的形状应该是(1080, 12288)
,而不是(12288, 1080)
。要解决这个问题,首先需要转置数组:
输入层的输入形状应该为(num_features,)
(即(12288,)
)。