gpt4 book ai didi

python - 不提供输入形状的 Keras Sequential

转载 作者:太空宇宙 更新时间:2023-11-04 01:51:46 25 4
gpt4 key购买 nike

我目前有一个如下所示的 keras 模型:

model = keras.Sequential()
model.add(keras.layers.Dense(100, activation=tf.nn.relu))
model.add(keras.layers.Dense(100, activation=tf.nn.relu))
model.add(keras.layers.Dense(len(labels), activation=tf.nn.softmax))

Keras documentation告诉我:

The model needs to know what input shape it should expect. For this reason, the first layer in a Sequential model (and only the first, because following layers can do automatic shape inference) needs to receive information about its input shape

但是,尽管我从未指定输入的形状,但实际上模型训练得很好,没有错误。

它如何知道预期的形状?如果我不提供输入形状,默认行为是什么?它将如何影响我的模型?

编辑:这是使用 tf.keras,也就是 keras 的 Tensorflow 后端

最佳答案

很好的观察 - 我相信 Keras 文档应该更新。当未提供输入形状时,Keras 会从 Model.fit 的参数 x 中推断出它,然后才构建整个模型。具体来说,这就是正在发生的事情:

  1. Sequential 模型中添加 Keras 层时,由于从未设置参数 input_shape(并且扩展为 batch_input_shape),因此属性 Model.inputs 保持 None(参见 Sequential.add)。
  2. 然后,在 Model.fit 中,他们检查是否设置了 Model.inputs(参见 Model.fitModel._standardize_user_data),如果没有设置,他们从提供的输入数组中推断出输入形状。
  3. 最后,在 Model._set_inputs 中,他们使用推断的 input_shape 构建整个模型(参见 Model._set_inputs)。

这可以通过在拟合模型之前打印一些权重(例如 print(model.layers[0].get_weights()))来验证。您会看到,当参数 input_shapebatch_input_shape 未提供给模型的第一层时,权重数组为空,因为模型尚未构建。

关于python - 不提供输入形状的 Keras Sequential,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57871463/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com