问题标签 [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 回答
501 浏览

tensorflow - 如何在张量流的波束搜索解码器中使用调度采样。

基本解码器包含一个添加辅助方法的参数,该辅助方法可以是调度采样辅助方法。但是波束搜索解码不包含任何辅助参数。

虽然在代码中看起来使用了一些采样,但不清楚是否使用了计划采样。class BeamSearchDecoder(decoder.Decoder): """BeamSearch 采样解码器。"""

很高兴知道并澄清我的疑问。希望对此事有所了解。提前致谢。

0 投票
1 回答
67 浏览

python - 在特定索引的张量中找到最大值。(Bi-LSTM-max 实现)

我正在尝试按照以下论文中的描述实现 BiLSTM-Max: Supervised Learning of Universal Sentence Representations from Natural Language Inference Data

我正在使用 Tensorflow 来实现。我从一个原始的 LSTM 代码开始,但已经成功地进行了修改,以便它可以在动态长度输入和双向(即 Dynamic Bi-LSTM)下运行。

接下来将其修改为 Bi-LSTM-Max,我替换了获取最后一个输出并在 n_steps 中找到最大值,如下所示:

当我在 n_steps 维度上取最大值时,我假设那些索引>seqlen 是 0,所以我可以在整个维度上取最大值,而不是从 0 到 seqlen 取最大值。经过仔细检查,我意识到由于随机初始化,未分配索引的值可能不为零,或者它可能只是内存中最后分配的值。

这个操作在 python 数组中是微不足道的,但是,对于张量操作,我找不到简单的方法。有人对此有想法吗?

0 投票
2 回答
1512 浏览

python - 自定义损失函数 Keras

我正在尝试在 Keras 中为 RNN(LSTM)实现我自己的自定义损失函数。这是我的代码。

我收到以下错误

这使我相信我的损失函数正在返回“无”值,但是,我的代码输出0.941634

在显示上面显示的错误之前。这来自语句 print(out1),它在 RNN 之外测试损失函数。关于什么可能是错的任何想法?

0 投票
1 回答
970 浏览

neural-network - RNN 的 Keras get_weight 解释

当我使用 Keras 运行此代码时:

我得到这个输出

我想,(3,3) 矩阵是权重矩阵,将 RNN 单元相互连接起来,两个数组之一可能是偏差但是第三个是什么?

0 投票
1 回答
1545 浏览

tensorflow - 由于 batch_size 问题,有状态 LSTM 无法预测

我能够使用 keras 成功训练我的有状态 LSTM。我的批量大小是 60,我在网络中发送的每个输入都可以被 batch_size 整除以下是我的片段:

我成功运行的训练线:

现在我尝试预测再次被 60 整除的测试集,但出现错误:

ValueError:在有状态的网络中,您应该只传递包含多个样本的输入,这些样本可以除以批量大小。发现:240 个样本。批量大小:32。

谁能告诉我上面有什么问题?我很困惑,尝试了很多东西,但没有任何帮助。

0 投票
1 回答
435 浏览

python - 4D LSTM:I/O 形状的问题

我正在尝试让 4D TimeDistributed(LSTM(...)) 在 Keras 中工作,但我遇到了输入/输出形状的问题。

trainX、trainY 和 dataset 的输入形状如下:

trainX.shape = (63, 3, 34607, 7)
trainY.shape = (63, 34607, 7)
dataset.shape = (100, 34607, 7)

我收到的错误如下:

检查目标时出错:预期 time_distributed_59 的形状为 (1, 3, 7) 但得到的数组的形状为 (63, 34607, 7)

上面提到的层是关于最后一个 TimeDistributed Dense Layer 的。

这是我打印出每一层的输入和输出形状时的输出:

(1, 3, 34607, 7) layer[0] - 输入
(1, 3, 34607, 7) layer[0] - 输出
(1, 3, 34607, 7) layer[1] - 输入
(1, 3, 7) layer[1] - 输出
(1, 3, 7) layer[2] - 输入
(1, 3, 7) layer[2] - 输出

但是,最终的输出层应该是形状为 (1, 1, 34067, 7) 或形状为 (1, 34067, 7) 的预测

感谢您的任何建议!

0 投票
1 回答
729 浏览

machine-learning - 如何更改 Tensorflow RNN 模型中的最大序列长度?

我目前正在尝试调整我的 tensorflow 分类器,它能够将一系列单词标记为正面或负面,以处理更长的序列,而无需重新训练。我的模型是一个 RNN,最大序列长度为 210。一个输入是一个词(300 暗淡),我用 Google 的 word2vec 对这些词进行了向量化,因此我能够输入一个最多 210 个词的序列。现在我的问题是,如何将最大序列长度更改为例如 3000,以对电影评论进行分类。

我的工作模型的最大序列长度固定为 210(tf_version: 1.1.0):

我已经尝试过哪些修改:

1 用 None 替换 n_chunks 并简单地输入数据

2 更改 x 然后恢复旧模型:

如果可能的话,您能否向我提供任何工作示例或解释为什么它不是?

0 投票
1 回答
89 浏览

python - 需要有关 RNN 模型的建议以格式化字符串

情况

我目前正在学习 Tensorflow 并且第一次尝试(在遵循/尝试 MINST 教程之后)我想创建一个模型(可能是 RNN)来做一些基本的字符串格式化:

我知道对于以下情况,我可能不需要像深度学习这样复杂的东西,但这只是为了训练自己。

我有一组假定的“干净地址”字符串,我想在其中提取实际的干净地址。

她的就是我想要得到的那种转变:

我需要更多示例:这是一个包含 200 个元素的电子表格的链接(计划将其扩展到 1000 - 5000 个元素)

如您所见,有很多可识别的模式:

  • 不要拿BP单词和后面的 2 或 4 位数字
  • 不要服用ZIZA否则Zone d'activiter...
  • 地址通常看起来像00 (Rue|Voie|Avenue|...) nameOfStreet
  • ETC...

我认为如何进行

我正在尝试获取作为输入字符串一部分的输出字符串。它应根据上述模式删除单词。

我认为我将继续使用 RNN 类型的图,因为它应该检测到诸如“有一个”BP”之类的东西,所以我不接受这个词,如果下一个输入是 2 或 4 位字符串,我不是拿那些”,我认为应该有某种记忆。

这完全取决于我想要输入数据的方式。我想我有两种或三种方法可以做到这一点:

  • 输入单个单词(以空格分隔)
  • 输入整个字符串(整个地址)
  • 输入一个字符串,然后将其拆分到更深层?

事情是:

  • 如果我输入单个单词,我如何标记字符串分隔?

  • 如果我输入整个字符串,这似乎有点像丢失了,因为
    系统只会获取或删除单个单词。

  • 第三个选项(将两者混合)是否有意义?

是否可以批量训练并使用“批量部分”输入多个单词,每个批次代表和地址。

另外,我想知道在我的系统中,节点的权重是否将全部为 0 和 1(因为它应该只能获取或删除单个单词),或者它是否将是中间值,例如保留单词的概率。

过程回顾

  1. 创建所有单个单词的字典
  2. 将我的字符串填充到相同的长度?
  3. 将我所有的字符串(或单词?)转换为一维数组
  4. 定义图表
  5. 小批量输入字符串(或单词?)
  6. 测试和显示精度(输出字符串应该与预期输出完全匹配还是预期输出和输出之间的差异百分比更有趣?)
  7. 保存图表
  8. 用它来格式化我的字符串

非常感谢您阅读所有内容,任何帮助将不胜感激。

特别是关于我前进的总体方向,以及将数据输入图表的方式。

0 投票
0 回答
510 浏览

tensorflow - Keras model.load_weights(WEIGHTS) 提供不准确的结果

我正在使用带有 MSCOCO 数据集的 Keras(Tensorflow 后端)训练 LSTM RNN 来生成描述。在训练模型时,它的准确率为 92%,损失率为 0.79。此外,当模型训练时,我测试了每个时期的描述生成,当模型给出一个随机词时,它提供了非常好的预测和有意义的描述。

然而,在训练之后,我在 Keras 中使用 model.load_weights(WEIGHTS) 方法加载了模型,并尝试通过给出一个随机词来创建描述,就像我之前所做的那样。但是现在模型没有提供有意义的描述,它只是输出完全没有意义的随机单词。

谁能告诉我这可能是什么问题?

我的模型参数是:

10 个 LSTM 层,学习率:0.04,激活:Softmax,损失函数:分类交叉熵,优化器:rmsprop

更新:

这是我的模型:

这就是我训练和保存模型权重的方式(我在每个时期生成描述以测试准确性):

这就是我加载模型的方式(WEIGHTS = 我保存的模型):

我将随机生成的向量提供给我的模型进行测试。这就是我生成描述的方式。

0 投票
1 回答
284 浏览

python - 在 dynamic_rnn 和 LSTMCell 中使用带有输入字符串的 TensorFlow 时出错

我想使用 TensorFlow 来解决有监督的问题。很简单:

  • 字符串输入列表。该字符串的格式为:“words_10-06-2017”
  • 浮点输出列表。标签是浮点数:3.0

我想使用具有该格式的字符串集和一组浮点标签来训练模型。

系统信息

  • 视窗 7 x64
  • 张量流 1.2
  • Python 3.5.2
  • IDE Pycharm 2017.1.1

我正在使用这段代码:

问题出在这一行:

这是输出:

ValueError:需要变量 rnn/lstm_cell/kernel 的初始化程序

这可能是 TensorFlow 问题吗?

感谢您的关注

全部输出: