Tensoflow2 LSTM-未使用的参数input_shape



所以我用以下代码构建了神经网络:

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,因此文档可能不完整。您可以在顺序API指南中找到有关input_shape参数的更多信息。

相关内容

最新更新