在theano中使用布尔变量

时间:2016-06-14 14:07:50

标签: python theano autoencoder

我正在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”并继续训练。有没有人知道如何让它交替使用?

0 个答案:

没有答案