问题标签 [autoencoder]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1777 浏览

matlab - 使用带有自动编码器的大输入值

我在 MATLAB 中创建了一个自动编码器神经网络。我在第一层有相当大的输入,我必须通过网络的输出层进行重建。我不能按原样使用大输入,所以我使用sigmfMATLAB 的函数将其转换为 [0, 1] 之间。对于所有大值,它为我提供了 1.000000 的值。我尝试使用设置格式,但没有帮助。

在我的自动编码器中使用大值是否有解决方法?

0 投票
1 回答
2537 浏览

machine-learning - 在具有 MSE 损失和 ReLU 激活的去噪自动编码器中使用 Ada-Delta 方法不收敛?

我刚刚为我自己的深度神经网络库实现了 AdaDelta ( http://arxiv.org/abs/1212.5701 )。论文有点说带有 AdaDelta 的 SGD 对超参数不敏感,并且它总是收敛到好的地方。(至少 AdaDelta-SGD 的输出重建损失可以与微调动量方法相媲美)

当我在 Denoising AutoEncoder 中使用 AdaDelta-SGD 作为学习方法时,它确实在某些特定设置中收敛,但并非总是如此。当我使用 MSE 作为损失函数,使用 Sigmoid 作为激活函数时,它收敛得非常快,经过 100 个 epoch 的迭代,最终的重建损失优于所有普通 SGD、带有 Momentum 的 SGD 和 AdaGrad。

但是当我使用 ReLU 作为激活函数时,它并没有收敛,而是继续堆叠(振荡),具有高(坏)重建损失(就像你使用具有非常高学习率的普通 SGD 时的情况一样)。它叠加的重建损失的幅度大约是动量方法产生的最终重建损失的 10 到 20 倍。

我真的不明白为什么会这样,因为论文说 AdaDelta 很好。请让我知道这些现象背后的原因,并教我如何避免它。

0 投票
2 回答
728 浏览

python - 从 pylearn2 中的无监督学习中获取数据的学习表示

我们可以使用下面的 YAML 文件(以及 pylearn2/scripts/train.py)在 pylearn2 中训练自动编码器

我们得到的是作为“dae_l1.pkl”的学习自编码器模型。

如果我想将此模型用于监督训练,我可以使用“dae_l1.pkl”来初始化 MLP 的层。然后我可以训练这个模型。我什至可以使用“fprop”函数预测模型的输出。

但是,如果我不想使用这个预训练模型进行监督学习,我只想用自动编码器保存我的数据的新学习表示。

我怎样才能做到这一点?

更详细的问题放在这里

0 投票
1 回答
727 浏览

python - 如何加速自动编码器以用于使用 python 的 theano 包编写的文本数据?

我是 theano 的新手,我正在尝试调整此处的自动编码器脚本以处理文本数据。此代码使用 MNIST 数据集作为训练数据。该数据采用 numpy 二维数组的形式。

我的数据是一个包含大约 100,000 个实例和大约 50,000 个特征的 csr 稀疏矩阵。该矩阵是使用 sklearn 的 tfidfvectorizer 来拟合和转换文本数据的结果。当我使用稀疏矩阵时,我修改代码以使用 theano.sparse 包来表示我的输入。我的训练集是符号变量:

但是,theano.sparse 矩阵不能执行原始脚本中使用的所有操作(这里有一个稀疏操作列表。该代码使用输入的张量方法中的点和总和。我已将点更改为 sparse.dot 但我找不到用什么替换总和,因此我将训练批次转换为密集矩阵并使用原始张量方法,如此成本函数所示:

get_corrupted_input 和 get_reconstructed_input 方法与上面链接中的一样。我的问题是有没有更快的方法来做到这一点?

将矩阵转换为密集矩阵会使训练运行非常缓慢。目前,以 20 个训练实例的批大小进行一个训练 epoch 需要 20.67m。

您可以提供的任何帮助或提示将不胜感激!

0 投票
1 回答
382 浏览

encog - encoder/decoder ripping from autoencoder in encog

I have created and learned autoencoder in Encog and I try to rip it into parts: encoder and decoder part. Unfortunately I cannot get it and I keep getting strange improper data (comparing result from applying once net to data and twice data -> enc -> dec).

I have tried to make it with simply GetWeight and SetWeight but there result is incorrect. The solution found in encog documentation - initialization flat network is for me not clear (I cannot get it working).

Full old-like (set/get weight) code of AutoEncoder:

How can I correctly rip only two first layers from autoencoder for encoder and two last layers from one for decoder?

0 投票
1 回答
2356 浏览

neural-network - Searching a deep autoencoder example for dimensionality reduction

I want to configure a deep autoencoder in order to reduce the dimensionality of my input data as described in this paper. The layer sizes should be 2000-500-250-125-2-125-250-500-2000 and I want to be able to pull out the activation of the layer in the middle (as described in the paper, I want to use the values as coordinates). The input data consists of binary vectors with a length of 2000 each. Now I'm searching for a working example which I can use as a starting point. I already tried DeepLearning4J but wasn't able to build a satisfying autoencoder. I would be thankful for any suggestions.

0 投票
1 回答
323 浏览

theano - 在 theano 中实现饱和自动编码器

我正在尝试使用本文中描述的正则化方法来实现自动编码器:“饱和自动编码器”,Goroshin 等。等,2013

本质上,这试图最小化隐藏层的输出与用于计算隐藏层输出的非线性函数的平坦部分之间的差异。

假设我们使用阶跃函数作为非线性,阶跃为 0.5,一个简单的实现可能是:

那么,正则化成本可以很简单:

我正在尝试在 Theano 中实现此功能。从Theano 网站上提供的去噪自动编码器代码开始。对其进行了一些基本的修改:

上述损失函数对隐藏层输出施加了 L1 惩罚,这应该(希望)将它们中的大多数驱动为 0。代替这个简单的 L1 惩罚,我想使用上面给出的饱和惩罚。

知道怎么做吗?我在哪里计算 y_prime?如何象征性地做到这一点?

我是 Theano 的新手,还在赶上符号计算部分。

0 投票
0 回答
236 浏览

theano - Theano 隐藏层的数值如何才能被有效地访问,即不是 eval()?

请问,有没有什么有效的方法可以在theano中提取隐藏层的数值?我可以使用 .eval() 来完成这项工作,这非常慢。

代码是(基于对dA.py的修改)

事实证明 .eval() 超级慢,无论如何我可以改进它吗?我尝试用 theano.function 编写它,但我失败了。这是我的代码

它不起作用,错误日志是

所以我在这里有两个问题:

  1. 这里的功能代码怎么写?
  2. 有没有什么有效的方法可以输出theano中隐藏层的数值?
0 投票
2 回答
3905 浏览

autoencoder - keras 自动编码器不收敛

有人可以向我解释为什么自动编码器不收敛吗?对我来说,下面两个网络的结果应该是一样的。然而,下面的自动编码器没有收敛,而它下面的网络却是。


0 投票
3 回答
6218 浏览

python - 高维数据的自动编码器

我正在做一个项目,我需要减少我的观察的维度,并且仍然对它们有一个有意义的表示。出于多种原因,强烈建议使用自动编码器,但我不太确定这是最好的方法。

我有 1400 个尺寸约为 60,000 的样本,这太高了,我正试图将它们的维度降低到原始维度的 10%。我正在使用theano 自动编码器[ Link ],似乎成本一直在 30,000 左右(非常高)。我尝试增加 epoch 数或降低学习率,但均未成功。我不是自动编码器方面的专家,所以我不确定如何从这里开始,或者何时停止尝试。

我可以运行其他测试,但在继续之前,我想听听你的意见。

  • 您是否认为数据集太小(我可以再添加 600 个样本,总共约 2000 个)?

  • 你认为使用堆叠的自动编码器会有所帮助吗?

  • 我应该继续调整参数(时期和学习率)吗?

由于数据集是一组图片,我试图可视化来自自动编码器的重建结果,而我得到的只是每个样本的相同输出。这意味着在给定输入的情况下,自动编码器会尝试重建输入,但我得到的是任何输入的相同(几乎完全)图像(看起来像是数据集中所有图像的平均值)。这意味着内部表示不够好,因为自动编码器无法从中重建图像。

数据集: 1400 - 2000 张扫描书籍(包括封面)的图像,每张约 60.000 像素(转换为 60.000 个元素的特征向量)。每个特征向量都在 [0,1] 中进行了归一化,最初的值在 [0,255] 中。

问题:使用自动编码器降低它们的维度(如果可能的话)

如果您需要任何额外的信息,或者如果我错过了一些可能有助于更好地理解问题的内容,请添加评论,我很乐意帮助您帮助我 =)。

注意:我目前正在对整个数据集进行更多时期的测试,我将根据结果更新我的帖子,但这可能需要一段时间。