【发布时间】:2021-10-22 00:21:13
【问题描述】:
我有一个数据集,其方案如下:
X1 ... X20 C
前 20 列是输入数据,最后一列是目标数据。数据集包括 2000 条记录。我想设计一个顺序 Keras 模型来对那些目标标签(从 1 到 10 不等,因此是多标签分类问题)进行分类。假设我已经将这些输入数据和标签保存在 X_train_1 和 y_train_1 中,这是我的模型:
def build_model_1(n_hidden = 1, n_neurons = 30, learning_rate = 3e-3, input_shape = X_train_1.shape):
model = tf.keras.Sequential()
model.add(tf.keras.layers.InputLayer(input_shape=input_shape))
model.add(tf.keras.layers.BatchNormalization(momentum=0.999))
for layer in range(n_hidden):
model.add(tf.keras.layers.Dense(n_neurons, tf.keras.activations.selu,
kernel_initializer="lecun_normal",
kernel_regularizer= tf.keras.regularizers.l2(0.01)))
model.add(tf.keras.layers.BatchNormalization(momentum=0.999))
model.add(tf.keras.layers.Dense(10, tf.keras.activations.softmax, kernel_initializer="lecun_normal"))
loss = tf.keras.losses.categorical_crossentropy
optimizer = tf.keras.optimizers.Adam(learning_rate=learning_rate, beta_1=0.9, beta_2=0.999)
metric = [tf.keras.metrics.Accuracy()]
model.compile(loss = loss, optimizer=optimizer, metrics=[metric])
return model
我认为输入的形状应该是我的训练数据集的形状,但是当我编译并拟合我的模型时,我收到以下错误:
ValueError: Input 0 of layer sequential_12 is incompatible with the layer: expected ndim=3, found ndim=2. Full shape received: (32, 20)
我在这里做错了什么?
【问题讨论】:
-
输入形状不包含批次/样本维度。
-
@Dr.Snoopy:我的数据只是所有条目中的数字。那么,我应该输入什么作为样本维度?
标签: python tensorflow keras