我正在尝试在Keras中训练一个非常简单的前馈网络。我希望给网络输入1800个数字,并让它激活6个输出中的一个。
我的模型设置如下:
model = keras.Sequential([ keras.layers.Dense(256, input_dim = 1800, activation=tf.nn.relu), keras.layers.Dense(48, activation=tf.nn.relu), keras.layers.Dense(6, activation=tf.nn.softmax)])
我的数据设置如下:
数据被分成两个Python列表training_data
和training_labels
。
training_labels
中的一个元素是一个包含6个数字的Python列表,像这样:
[0, 0, 0, 0, 1, 0]
training_data
中的一个元素是一个包含1800个数字的Python列表,像这样:
[15, 155, 1200, 1, ... ]
总共有1500个样本。
为了拟合模型,我正在做如下操作:
model.fit(training_data, training_labels, batch_size=1)
但我得到了以下错误:
ValueError: Error when checking input: expected dense_1_input to have shape (None, 1800) but got array with shape (150, 1)
回答:
除了我已经提到的之外,我建议在将数据输入到网络之前添加一行代码:
import numpy as nptraining_data = np.asarray(training_data)assert(training_data.shape = (1500,1800))