如何使 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 (将#修改为@)