python - theano中的反卷积自动编码器

标签 python machine-learning theano

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

我目前正在处理一维信号,因此我的图像形状是 (batch_size, 1, 1, 1000),filter/W 大小是 (num_kernels, 1, 1, 10)。卷积的输出是 (batch_size, num_kernels, 1, 991)。 因为我希望 W' 只是二维翻转(在我的例子中是 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。我不知道这是否与此问题有关,或者它是否是我的代码中存在的许多其他潜在错误之一。

最佳答案

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

每当你得到 NaN 时,首先要尝试的是降低学习率的大小。

关于python - theano中的反卷积自动编码器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31316455/

相关文章:

python - 在 Python 中对系列进行切片和索引

python - Jinja2 - 以 x 为一组呈现列表项

Python——重新加载模块级对象

python - 后验高斯过程(Python)

macos - Theano 或 Tensor 流作为 Mac 上的 Keras 后端

python - Keras 多类分类器错误与验证数据和验证标签 : Input arrays should have the same number of samples as target arrays

python - 如何在 Selenium Webdriver Python 3 中使用 Chrome 配置文件

python - 一个热门编码器 categorical_features 的用途是什么?

r - 在 R 中绘制二进制目标 (mlr) 的部分依赖图

machine-learning - SHOGUN Toolbox 卷积神经网络与 Caffe 和 Theano 相比如何?