微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使 LSTM 网络平移不变/等变?

如何解决如何使 LSTM 网络平移不变/等变?

Example of input and target

嗨,我有一个 RNN,它能够“纠正”由偏微分方程 (PDE) 求解器(输入)给出的域 u(x,t) 的第一次猜测实际的真实答案(目标)。 x 中字段的点数(512 个特征)是固定的,但馈送到网络的时间步数是可变的(比如在 20 到 200 之间)。给出初始猜测的求解器具有周期性边界条件:输入特征在 x 中的平移会导致输出的等效平移,即。翻译等方差。所以我的神经网络也应该提供更正。

我在中心的示例中对其进行了训练,效果很好。然而,当然,如果我给它一个x 中移动的输入,就像下图一样,它会给出噪声作为输出

让 LSTM 网络成为翻译等变的最聪明的方法是什么?

我的想法:

我正在考虑将卷积层(非常适合平移不变性)作为输入,将此输出 - 抽象特征 - 提供给 lstm 层,然后将校正后的抽象特征解码回实际解决方案字段 u(x,t)卷积层?但这似乎有太多参数无法训练?

另一种方法是仅在许多翻译数据示例上训练 RNN-only。但我觉得这并没有“利用”输入和输出由于周期性边界条件而具有平移不变性的信息。

我发现了什么:

  1. 我能找到的大多数示例都使用 LSTM 层进行分类,而不是返回到序列。
  2. Sequence2Sequence 示例似乎在时间上有一个 1d 输入。它们不会在每个时间步对输入特征进行卷积

仅当前代码 RNN:

n_x = 512
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.LSTM(units=lstm_units,input_shape=(None,n_x),return_sequences=True))
model.add(tf.keras.layers.Dense(dense_units,activation='relu'))
model.add(tf.keras.layers.Dense(n_x,activation='linear'))
model.compile(loss='mse',optimizer='adam',metrics=['mse'])

非常感谢您的帮助/建议!!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。