【问题标题】:Keras simple feed-forward network input shape errorKeras 简单前馈网络输入形状错误
【发布时间】:2019-12-16 08:02:56
【问题描述】:

我正在尝试在 Keras 中训练一个非常简单的前馈网络。我想给网络 1800 个号码,并让它激活 6 个输出中的 1 个。

我的模型设置如下:

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_datatraining_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)

【问题讨论】:

  • "但是得到了形状为 (150, 1) 的数组"。你没有提供你认为你作为数据提供的东西
  • 打印出training_data.shapetraining_data 不具有您认为的形状
  • training_data 是一个包含 1500 个元素的 Python 列表。每个元素都是一个包含 1800 个整数的列表。 len(training_data)返回1500,我可以断言里面每个list的长度都是1800。
  • 尝试重塑数据 training_data=np.reshape(1500,1800)
  • 我使用的是 Python 列表,而不是 NumPy。我将转换成 NumPy 数组,看看会发生什么。

标签: python python-3.x machine-learning keras tf.keras


【解决方案1】:

正如 cmets 中所述,您可能对数据的形状存在误解。为了证明这一点,请查看下面的代码。

import numpy as np

training_data = np.random.rand(1500, 1800)
training_labels = np.ones((1500, 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)
])
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
model.fit(training_data, training_labels, batch_size=1)

这个模型编译和训练。

【讨论】:

  • 不错、干净、可重复的答案 (+1)
【解决方案2】:

除了上面提到的,我建议在将数据输入网络之前添加一行:

import numpy as np

training_data = np.asarray(training_data)
assert(training_data.shape = (1500,1800)) 

【讨论】:

    猜你喜欢
    • 2020-03-16
    • 2019-01-15
    • 2017-10-15
    • 2021-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-18
    • 2018-08-15
    相关资源
    最近更新 更多