【问题标题】:How to fix error with Keras Flatten layers?如何修复 Keras Flatten 图层的错误?
【发布时间】:2021-05-18 22:31:07
【问题描述】:

这是我的代码

model = keras.Sequential([
    keras.layers.Flatten(input_shape=(1,11)),    
    keras.layers.Dense(4, activation='relu'),   
    keras.layers.Dense(10, activation='softmax')  
]
)

我的数据是 1000 行,11 列(模型的 11 个输入)。因此,为了使我使用的 NN 的输入层变平。这给了我错误:

WARNING:tensorflow:Model was constructed with shape (None, 1, 11) for input KerasTensor(type_spec=TensorSpec(shape=(None, 1, 11), dtype=tf.float32, name='flatten_1_input'), name='flatten_1_input', description="created by layer 'flatten_1_input'"), but it was called on an input with incompatible shape (None, 11).

【问题讨论】:

  • 解决更多代码(尤其是输入部分)需要的问题。此外,这看起来像错误点的维度,因此打印输入的形状以确保它是您认为的。
  • 使用Keras.layers.Input() 而不是Keras.layers.Flatten()
  • 我试过 keras.layers.Input(input_shape=(1,11)) 但它给了我一个错误!

标签: python tensorflow machine-learning keras neural-network


【解决方案1】:

您的输入形状似乎已经是(num_inputs, 11),因此您不需要将其展平。取出Flatten 层应该可以解决这个问题。

【讨论】:

  • 有道理,谢谢!如果我取出这条线,这会删除我的 NN 的输入层吗?或者我如何用一条线替换这条线来定义我的输入层?
  • 好久没用过keras了,不过如果我没记错的话你得把input_shape=(11)加到新的第一层(keras.layers.Dense(4, activation='relu', input_shape=(11)))
  • 哎呀好像我错了,你得把第一层改成keras.layers.Dense(4, activation='relu', input_dim=11)
  • 如果这解决了您的问题,请随时将其标记为正确。很高兴我能帮上忙!
猜你喜欢
  • 2017-10-25
  • 2021-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-08
  • 1970-01-01
  • 2019-01-24
  • 2023-04-06
相关资源
最近更新 更多