Keras:层顺序的输入0与层不兼容

时间:2020-11-08 23:56:37

标签: python tensorflow keras neural-network

我正在尝试创建一个具有一个隐藏层的神经网络模型,然后尝试对其进行评估,但出现一个我无法清楚理解的错误:

ValueError:连续图层_1的输入0与以下图层不兼容::预期的min_ndim = 2,找到的ndim = 1。收到的完整形状:[30]

似乎输入层的尺寸有误,但我无法完全确定是什么。我已经在Google上搜索并查看了stackoverflow,但到目前为止还没有找到任何有效的方法。有什么帮助吗?

这是一个最小的工作示例:

import tensorflow as tf

# Define Sequential model with 3 layers
input_dim = 30
num_neurons = 10
output_dim = 12
model = tf.keras.Sequential(
    [
        tf.keras.layers.Dense(input_dim, activation="relu", name="layer1"),
        tf.keras.layers.Dense(num_neurons, activation="relu", name="layer2"),
        tf.keras.layers.Dense(output_dim, name="layer3"),
    ]
)
model(tf.ones(input_dim))

1 个答案:

答案 0 :(得分:1)

图层具有输入和输出尺寸。对于NN“中间”的层,他们从上一层的输出域中找出它们的输入域。唯一的例外是第一层没有其他内容,需要设置a 0.000000 b 0.112446 c 0.289983 d 0.000000 e 1.000000 Name: e, dtype: float64 。这是修复代码的方法。注意我们如何传递尺寸。第一(隐藏)层是input_dim x num_neurons,第二(输出层)是num_neurons x output_dim

您可以在两者之间粘贴更多的层;他们只需要第一个参数,即输出尺寸

还请注意,我也必须修复您的最后一行,tf.ones必须为2D形状num_observation x input_dim

input_dim

产生(对我来说;我认为数字本质上是随机初始化)

import tensorflow as tf

# Define Sequential model with 1 hidden layer
input_dim = 30
num_neurons = 10
output_dim = 12
model = tf.keras.Sequential(
    [
        tf.keras.layers.Dense(num_neurons, input_dim = input_dim, activation="relu", name="layer1"),
        tf.keras.layers.Dense(output_dim, name="layer3"),
    ]
)
model(tf.ones((1,input_dim)))