[英]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.