我正在尝试创建一个具有一个隐藏层的神经网络模型,然后尝试对其进行评估,但出现一个我无法清楚理解的错误:
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))
答案 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)))