theano中的反卷积自动编码器

时间:2015-07-09 11:44:04

标签: python machine-learning theano

我是theano的新手并尝试使用示例convolutional networkdenoising autoencoder来制作一个去噪卷积网络。我目前正在努力研究如何制作反向重量的W' In this paper他们使用绑定权重W'在两个维度上翻转。

我正在处理1d信号,因此我的图像形状为(batch_size,1,1,1000),滤镜/ W尺寸为(num_kernels,1,1,10)。然后卷积的输出(batch_size,num_kernels,1,991)。 因为我想W'只是在2维(或我的情况下是1d)翻转,我很想做到这一点

w_value = numpy_rng.uniform(low=-W_bound, high=W_bound, size=filter_shape)
self.W = theano.shared(np.asarray((w_value), dtype=theano.config.floatX), borrow=True)
self.W_prime = T.repeat(self.W[:, :, :, ::-1], num_kernels, axis=1)

我在相关维度中反向翻转它并重复这些权重,使它们与隐藏图层中的要素图相同。

通过这种设置,我是否只需要更新W的渐变或者W_prime是否也是渐变计算的一部分?

当我这样做时,MSE在第一个小批量之后会下降很多,然后停止更改。使用交叉熵从第一次迭代中给出NaN。我不知道这是否与此问题有关,或者是否是我在代码中遇到的许多其他潜在错误之一。

1 个答案:

答案 0 :(得分:1)

我无法对W_prime方法的有效性发表评论,但我可以说您只需计算每个原始共享变量的成本梯度。您的W_primeW的符号函数,而不是共享变量本身,因此您不需要计算W_prime的渐变。

每当你获得NaN时,首先要尝试的是减少学习率的大小。