问题标签 [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 投票
1 回答
578 浏览

python - Keras:错误的训练时期数

我正在尝试构建一个类来快速初始化和训练自动编码器以进行快速原型设计。我想做的一件事是快速调整我训练的时期数。但是,似乎无论我做什么,模型都会将每一层训练 100 个 epoch!我正在使用 tensorflow 后端。

这是两种违规方法的代码。

任何有关如何解决问题的建议将不胜感激。我最初的怀疑是它与 tensorflow 有关,所以我尝试使用 theano 后端运行,但遇到了同样的问题。

是完整程序的链接。

0 投票
1 回答
350 浏览

python - 已经训练好的用于单词识别的 HMM 模型

我已经使用自动编码器实现了一个音素分类器(给定一个音频文件数组,它返回所有识别的音素)。我想扩展这个项目,以便可以识别单词。是否存在已经训练过的 HMM 模型(英文)可以识别给定音素列表的单词?

谢谢大家。

0 投票
1 回答
2589 浏览

python - tensorflow 复制变量,但不可训练以预训练下一层

我想实现自动编码器(确切地说是堆叠卷积自动编码器)

在这里我想先对每一层进行预训练,然后再进行微调

所以我为每一层的权重创建了变量

前任。第一层的 W_1 = tf.Variable(initial_value, name,trainable=True etc)

我预训练了第一层的 W_1

然后我想预训练第二层的权重(W_2)

这里我应该使用 W_1 来计算第二层的输入。

但是 W_1 是可训练的,所以如果我直接使用 W_1,那么 tensorflow 可以一起训练 W_1。

所以我应该创建保持 W_1 值但不可训练的 W_1_out

老实说,我试图修改这个网站的代码

https://github.com/cmgreen210/TensorFlowDeepAutoencoder/blob/master/code/ae/autoencoder.py

在第 102 行,它通过以下代码创建变量

但是它调用错误,因为它使用未初始化的值

我应该如何复制变量但使其不可训练来预训练下一层?

0 投票
1 回答
423 浏览

neural-network - 使用去噪自动编码器重建原始数据

有时,原始数据没有像生物学实验数据那样包含足够的信息。我有一个大小为 100*1000 的基因表达数据集。我想使用 Denoising AutoEncoder 来获得具有相同大小(100*1000)的重构输出。怎么可能?

0 投票
2 回答
7896 浏览

machine-learning - 自动编码器中的捆绑权重

我一直在研究自动编码器,并且一直想知道是否使用捆绑权重。我打算将它们堆叠起来作为预训练步骤,然后使用它们的隐藏表示来提供 NN。

使用未捆绑的重量,它看起来像:

f(x)=σ 2 ( b 2 + W 21 ( b 1 + W 1 *x))

使用捆绑的权重它看起来像:

f(x)=σ 2 ( b 2 + W 1 T1 ( b 1 + W 1 *x))

从非常简单的角度来看,是否可以说绑定权重可以确保编码器部分在给定架构的情况下生成最佳表示,而如果权重是独立的,那么解码器可以有效地采用非最佳表示并仍然对其进行解码?

我问是因为如果解码器是“魔法”发生的地方,并且我打算只使用编码器来驱动我的神经网络,那不会有问题。

0 投票
1 回答
1477 浏览

machine-learning - 如何使用堆叠自动编码器进行预训练

假设我希望使用堆叠自动编码器作为预训练步骤。

假设我的完整自动编码器是 40-30-10-30-40。

我的步骤是:

  1. 使用输入和输出层中的原始 40 个特征数据集训练 40-30-40。
  2. 仅使用上述训练好的编码器部分即 40-30 编码器,推导出原始 40 个特征的新的 30 个特征表示。
  3. 在输入和输出层中使用新的 30 个特征数据集(在步骤 2 中导出)训练 30-10-30。
  4. 从步骤 1,40-30 中获取经过训练的编码器,并将其从步骤 3,30-10 输入编码器,得到 40-30-10 编码器。
  5. 从步骤 4 中取出 40-30-10 编码器并将其用作 NN 的输入。

a) 这是正确的吗?

b) 我在训练 NN 时是否冻结 40-30-10 编码器中的权重,这与从原始 40 个特征数据集预生成 10 个特征表示并在新的 10 个特征表示数据集上进行训练相同。

PS。我已经有一个问题问我是否需要绑定编码器和解码器的权重

0 投票
2 回答
3892 浏览

python - 如何在 Keras 中正确实现自定义活动正则化器?

我正在尝试根据 Andrew Ng 的讲义实现稀疏自动编码器,如此处所示。它要求通过引入惩罚项(KL 散度)在自动编码器层上应用稀疏约束。在进行了一些小的更改后,我尝试使用此处提供的方向来实现这一点。这是由 SparseActivityRegularizer 类实现的 KL 散度和稀疏惩罚项,如下所示。

模型是这样构建的

当我调用 fit() 函数时,我得到负损失值,并且输出与输入完全不同。我想知道我哪里出错了。计算层的平均激活并使用此自定义稀疏正则化器的正确方法是什么?任何形式的帮助将不胜感激。谢谢!

我将 Keras 0.3.1 与 Python 2.7 一起使用,因为最新的 Keras (1.0.1) 版本没有自动编码器层。

0 投票
2 回答
1162 浏览

python - 如何将自动编码器分离为编码器和解码器(TensorFlow + TFLearn)

我一直在使用 tflearn 编写简单的自动编码器。

模型训练得很好,但训练后我想分别使用编码器和解码器。

我该怎么做?现在我可以恢复输入,我希望能够将输入转换为隐藏表示并从任意隐藏表示恢复输入。

0 投票
1 回答
6455 浏览

neural-network - 我应该使用损失或准确性作为提前停止指标吗?

我正在学习和试验神经网络,并希望得到更有经验的人对以下问题的意见:

当我在 Keras 中训练自动编码器('mean_squared_error' 损失函数和 SGD 优化器)时,验证损失逐渐下降。并且验证准确性正在上升。到目前为止,一切都很好。

然而,一段时间后,损失不断减少,但准确率突然回落到低得多的低水平。

  • 准确率上升非常快并保持高位突然回落是“正常”还是预期的行为?
  • 即使验证损失仍在减少,我是否应该以最大准确度停止训练?换句话说,使用 val_acc 或 val_loss 作为指标来监控提前停止?

见图片:

损失:(绿色 = val,蓝色 = 火车] 在此处输入图像描述

准确度:(绿色 = val,蓝色 = 火车] 在此处输入图像描述

更新:下面的评论为我指明了正确的方向,我想我现在更好地理解了。如果有人可以确认以下内容是正确的,那就太好了:

  • 准确度指标测量 y_pred==Y_true 的百分比,因此仅对分类有意义。

  • 我的数据是真实和二进制特征的组合。准确率图上升非常陡峭然后回落,而损失继续下降的原因是因为在 epoch 5000 左右,网络可能正确预测了 +/- 50% 的二进制特征。当训练继续时,在 12000 轮左右,对真实和二元特征的预测一起得到改善,因此损失减少,但单独对二元特征的预测不太正确。因此准确率下降,而损失减少。

0 投票
0 回答
242 浏览

machine-learning - 烤宽面条自动编码器:我如何只使用解码器部分?

假设我在 Lasagne 中有一个自动编码器,有两个编码层和两个 InverseLayers 作为解码器:

假设我已经对这个自动编码器进行了令我满意的训练,并且只想使用解码器;也就是说,我有要作为输入提供给 l2p(解码器部分的第一层)的数据。我该怎么做呢?我似乎无法构建仅由解码器部分组成的网络,因为这些是依赖于其他层存在的 InverseLayers。