问题标签 [rnn]

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 回答
1196 浏览

elasticsearch - 使用机器学习创建异常检测

弹性堆栈的新x-pack ML给我留下了深刻的印象。似乎他们的技术随着时间的推移学习数据模式,并且可以预测多个域中的异常。

在此处输入图像描述

放大: 在此处输入图像描述

我想知道可以使用什么方法和网络拓扑来创建类似的功能。假设由于 x-pack 适用于时间序列数据,RNN 将是一个好的开始,这是否公平?

对您的意见和参考感兴趣。

0 投票
1 回答
367 浏览

python - Tensorflow:递归神​​经网络批量训练

我正在尝试在 Tensorflow 中实现 RNN。我正在编写自己的函数,而不是使用 RNN 单元来练习。

问题是序列标记,输入大小是 [32, 48, 900],其中 32 是批量大小,48 是时间步长,900 是词汇大小,它是一个热编码向量。输出是 [32, 48, 145],其中前两个维度与输入相同,但最后一个维度是输出词汇量大小(one-hot)。基本上这是一个 NLP 标记问题。

我收到以下错误:

InvalidArgumentError(参见上文的追溯):logits 和标签必须相同大小:logits_size=[48,145] labels_size=[1536,145]

实际的 labels_size 是 [32, 48, 145] 但它在不受我控制的情况下合并了前两个维度。仅供参考 32 * 48 = 1536

如果我以批量大小 1 运行我的 RNN,它会按预期工作。我不知道如何解决这个问题。我在代码的最后一行遇到了问题。

我粘贴了代码的相关部分:

0 投票
1 回答
141 浏览

tensorflow - Tensorflow:如果 LSTM 被“重用”用于新输入,它的隐藏状态会重置吗?在一次向前传球中

问题:我有一个变量范围名称为“rnn”的 LSTM 单元,并将其分配为“范围”。

如果我在图表中使用 scope.reuse_variables(),我知道权重被重用于新的输入 X...

但是如果重用权重,LSTM隐藏状态会自动重置吗?...或者我是否必须在每次调用 scope.reuse_variables() 时显式重置隐藏状态

谢谢 !

0 投票
0 回答
201 浏览

python - 如何使原始 rnn 发出自定义输出而不是默认值?

根据原始 RNN 的 Tensorflow 文档,您可以在初始时间步长中将 cell_output 设置为您自己的形状,此时 time=0 以发出您自己的输出。

目前,它仅在我们将初始(时间 = 0)单元输出设置为 None 并且发出的其余单元输出等于前一个单元输出时才有效,但这不是我们想要的。我们希望发出我们自己的输出,而不是 RNN 单元的内部状态。

下面是相关的源代码:

这是我们在尝试创建图表时收到的错误消息:

ValueError:这两个结构没有相同的嵌套结构。第一个结构: ,第二个结构: (,)。

欢迎任何想法

0 投票
1 回答
366 浏览

tensorflow - 具有 time_major=True 的 dynamic_rnn 的输出形状

我正在使用 TensorFlow 来实现 RNN。我这样创建循环单元:

(1, ?, 16)正如我所期望的那样,它将输出形状报告为。第二个维度是?因为max_time未知。

现在我将其切换到time_major=True. 根据文档,我希望只交换前两个轴,所以输出形状应该是(?, 1, 16). 但事实并非如此。相反,它是(1, 1, 16). 这是怎么回事? max_time仍然未知,那么为什么将其硬编码为1?

0 投票
0 回答
274 浏览

tensorflow - tf.contrib.seq2seq.TraininHelper 在 Bahdanau seq2seq 实现中期望什么输入?

在阅读了Bahdanau 论文并将其翻译成当前的 tf.contrib.seq2seq API 之后,我对应该输入解码器的内容感到困惑。特别是,TrainingHelper 看起来应该收到一个时移的标签列表。

下面是我的工作示例,但我不确定它是否正确。

注意倒数第三行。

TrainingHelper 是否应该将编码器注释输入注意力包装的解码器系统?

  • 亲:如果inputs不是 shape like annotations,则 AttentionWrapper 最终会抱怨形状 - 这种形状在系统中出现的唯一位置是在编码器中。
  • 缺点:如果这是正确的,解码器从哪里获得基本事实?
  • 缺点:注意力包装的解码器(attn_cell)已经知道从哪里获取注释(这不是注意力机制的重点吗?)

无论如何,实际上,我得到了一个可训练的系统,但在我看来有些可疑(包括它相对于简单的 LSTM 表现不佳,但目前这绝对是切线)。

0 投票
1 回答
1330 浏览

tensorflow - 如何将`None` Batch Size 传递给 tensorflow 动态 rnn?

我正在尝试建立一个CNN+LSTM+CTC单词识别模型。
最初我有一个图像,我正在转换使用 CNN文字图像提取的特征并构建一系列特征,我将其作为顺序数据传递给RNN.

以下是我将特征转换为顺序数据的方式
[[a1,b1,c1],[a2,b2,c2],[a3,b3,c3]] -> [[a1,a2,a3],[b1,b2,b3],[c1,c2,c3]]
a,b,c使用CNN.
目前我可以将常量传递batch_size给模型common.BATCH_SIZE,但我想要的是能够将变量传递batch_size给模型。
如何才能做到这一点 ?



更新:


我收到如下错误:

0 投票
3 回答
31876 浏览

neural-network - 了解一个简单的 LSTM pytorch

这是文档中的 LSTM 示例。我不知道了解以下内容:

  1. 什么是输出大小,为什么没有在任何地方指定?
  2. 为什么输入有 3 个维度。5和3代表什么?
  3. h0 和 c0 中的 2 和 3 分别代表什么?

编辑:

*** RuntimeError: 预期矩阵,得到 3D、2D 张量

0 投票
1 回答
773 浏览

tensorflow - 在 tensorflow 上训练 LSTM 时,GPU 温度读数为 88 C

我在 tensorflow 中有一个 1 层 LSTM 模型,并且我的 GPU 的温度读数在训练阶段变得相当高。始终在 80 C 和 90 C 之间变化。我的 GPU 是 24/7 冷藏室中的水冷 gtx 1080“超级时钟”版本。该模型有效,但这个温度让我担心。我想知道这是否正常和安全。

我正在用标记化的 reddit 评论训练 LSTM 的下一个单词预测问题。我从 wildml.com 的不同教程中得到了这个想法。以下是有关它的一些详细信息:

  • TensorFlow 1.2.1、Cuda tk 8.0、Cudnn 6.0、Nvidia 驱动程序 375.66
  • 我的训练数据包含 20 万条 reddit 评论。
  • 我的字典由 8000 个单词组成,这意味着每个预测有 8000 个分类
  • 我使用 GLOVE 预训练的 100 维维基百科词嵌入
  • 我没有使用占位符来提供我的输入。这一切都由 TFRecordfiles 阅读器完成,它将示例输入到 100k 容量的随机洗牌队列
  • 从随机洗牌队列,它进入一个填充 FIFO 队列,在那里我生成了 20 个零填充小批量
  • 20 个大小的小批量进入一个 tf.dynamic_rnn(),其中 LSTM 单元的隐藏维度为 150
  • 我使用 tf.sign() 掩盖损失并使用 Adam 优化器最小化结果

我注意到当我提高小批量大小时温度会升高很多。1 号小批量(单个示例),读数在 72-75 摄氏度之间。对于 10 号小批量,它立即达到 78 摄氏度并保持在 78-84 摄氏度的范围内。对于 20 号小批量,84 -88 C. 30 小批量,87-92 C。

如果我将隐藏维度提高到 200、250、300 等,同时保持小批量大小固定,我也会得到类似的温度升高。

我也训练了相同的模型,但只使用占位符提供数据,即不使用 TFRecord、队列和小批量。它保持在 65 C 左右,但显然远未优化和理想地使用占位符来喂网。

我真的很感谢你的帮助,说实话,我有点绝望。

- - - - - - - - -编辑 - - - - - - - - - - -

事实证明,我的 BIOS 上已将水冷却器泵配置为根据 CPU 温度而变化……显然 GPU 温度不会影响它,这就是发生的事情。它以 50% 的容量运行。好吧,我已经将它调整为始终保持 100%,现在相同的模型以大约 100 的最高温度运行。83 C. 仍然不完美,但有很大的改进。我想由于我的模型的复杂性 + 我的 GPU 的 1.8 GHz 时钟非常高,我无能为力。

0 投票
1 回答
40 浏览

deep-learning - 图解释深度学习

我正在尝试建立一个对句子进行分类的模型。我正在使用递归神经网络(RNN)模型“GRUcell”,我有以下图表。我使用的损失函数是交叉熵。你能解释一下为什么每次迭代后的损失接近 0 到 1 吗?我找不到任何解释,谢谢。 在此处输入图像描述