我正在研究 theano 中的双语自动编码器。以本教程为参考,我创建了两个单语自动编码器。每个都采用一个句子的单热向量并创建一个潜在表示,它是一个 100 维的 numpy 数组。然后我将这两个(lat_1,lat_2)连接起来,这就是我遇到问题的地方。我想用 50% 的噪声掩盖其中一个潜在表示,以便一种语言需要使用另一种潜在表示作为重建自身的线索。从理论上讲,这将交替每个时期,以便两者都以最佳表示结束。
目前,我想我只用一方面来管理它。我的想法是在开始时添加一个 self.corrupted 变量并将其设置为 0 并在每个 epoch 之后更改变量,以便它交替出现。这是我为此添加的代码。
def get_corrupted_concat(self, lat_1, lat_2, corruption_level):
if self.corrupted == 1:
corr_lat_1 = self.get_corrupted_input(lat_1, corruption_level)
concatenated = T.concatenate((corr_lat_1, lat_2), axis=1)
self.corrupted = 0
print('corrupting lat_1')
else:
corr_lat_2 = self.get_corrupted_input(lat_2, corruption_level)
concatenated = T.concatenate((lat_1, corr_lat_2), axis=1)
self.corrupted = 1
print('corrupting lat_2')
return concatenated
然而,在训练时,它只会在开始时打印一次“corrupting lat_1”并继续训练。有谁知道让这个交替的方法?