所以我使用以下代码构建了神经网络:
import tensorflow as tf
tf_model = tf.keras.Sequential()
tf_model.add(tf.keras.layers.LSTM(50, activation='relu'))
tf_model.add(tf.keras.layers.Dense(20, activation='relu'))
tf_model.add(tf.keras.layers.Dense(10, activation='relu'))
tf_model.add(tf.keras.layers.Dense(1, activation='linear'))
tf_model.compile(optimizer='Adam', loss='mse')
我的训练集的形状如下:
>> ts_train_X.shape
(16469, 3, 21)
我在 stackoverflow 上阅读了大量文章和问题,以便为 LSTM 提供正确的数据框架。我发现的几乎每个页面都指定了 input_shape
参数并将其传递给 LSTM(..) 或 Sequential(..)。
当我查看LSTM API时我找不到对此参数的引用。我还瞥见了源代码,对我来说,形状似乎是自动推断出来的,但我对此不确定。
这引出了我的问题:为什么我的代码可以工作?如果我不指定 input_shape 参数,作为第一层的 LSTM 层如何知道我的输入的形状?
编辑:根据评论中的建议更改标题。
最佳答案
参数input_shape
可以赋予任何kerasLayer
子类的构造函数,因为这就是API的定义方式。
代码之所以有效,是因为 input_shape
作为关键字参数(**kwargs
)传递,然后这些关键字参数由 LSTM
传递> 构造函数传递给 Layer
构造函数,然后继续存储信息以供以后使用。这实际上意味着不必在每个层中定义 input_shape
参数,而是将其作为关键字参数传递。
我认为问题在于,由于 keras
已移至 tensorflow
,文档可能不完整。您可以在 Guide to the Sequential API 中找到有关 input_shape
参数的更多信息。 .
关于python - Tensoflow2 LSTM - 未使用的参数 input_shape?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61566010/