我正在theano中使用双语自动编码器。以this tutorial为参考,我创建了两个单语自动编码器。每个都采用一个句子的单热矢量并创建一个潜在的表示,这是一个100维的numpy数组。然后我连接这两个(lat_1,lat_2),这是我遇到问题的地方。我想用50%的噪声掩盖其中一个潜在的表示,因此一种语言需要使用另一种潜在的表示作为重建自身的线索。从理论上讲,这将交替每个时代,因此两者都以最佳表现形式结束。
目前,我认为我只是用一方来管理它。我的想法是在开头添加一个self.corrupted变量并将其设置为0并在每个纪元之后,更改变量以使其交替。这是我为此添加的代码。
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
然而,在训练时,它只在开始时打印“腐败lat_1”并继续训练。有没有人知道如何让它交替使用?