为了账号安全,请及时绑定邮箱和手机立即绑定

Keras 简单前馈网络输入形状错误

Keras 简单前馈网络输入形状错误

波斯汪 2022-04-27 13:09:36
我正在尝试在 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_data和training_labels.元素 fromtraining_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)
查看完整描述

2 回答

?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

正如评论中提到的,您可能对数据的形状有误解。为了证明这一点,请查看下面的代码。


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)

该模型编译和训练。


查看完整回答
反对 回复 2022-04-27
?
慕容708150

TA贡献1831条经验 获得超4个赞

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


import numpy as np


training_data = np.asarray(training_data)

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


查看完整回答
反对 回复 2022-04-27
  • 2 回答
  • 0 关注
  • 109 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信