繁体   English   中英

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

[英]Keras: Input 0 of layer sequential is incompatible with the layer

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

ValueError: 层序列 1 的输入 0 与层不兼容:预期 min_ndim=2,发现 ndim=1。 收到的完整形状:[30]

看起来我的输入层的尺寸有误,但我不太明白是什么。 我用谷歌搜索并查看了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))

层具有输入和输出维度。 对于神经网络“中间”的层,它们从前一层的输出域中找出它们的输入域。 唯一的例外是第一层没有任何内容,需要设置input_dim 这是修复代码的方法。 请注意我们如何传递维度。 第一个(隐藏)层是 input_dim x num_neurons,第二个(输出层)num_neurons x output_dim

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

另请注意,我还必须修复您的最后一行,tf.ones 需要是 2D 形状 num_observation x 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)))

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

<tf.Tensor: shape=(1, 12), dtype=float32, numpy=
array([[ 0.06973769, -0.1798143 , -0.2920275 ,  0.84811246,  0.44899416,
        -0.10300556,  0.00831143, -0.16158538,  0.13395026,  0.4352504 ,
         0.19114715,  0.44100884]], dtype=float32)>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM