问题标签 [attention-model]

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

tensorflow - 如何修改 Tensorflow Sequence2Sequence 模型以实现双向 LSTM 而不是单向 LSTM?

参考这个帖子了解问题的背景: TensorFlow embedding_attention_seq2seq方法是否默认实现了双向RNN Encoder?

我正在研究相同的模型,并想用双向层替换单向 LSTM 层。我意识到我必须使用 static_bidirectional_rnn 而不是 static_rnn,但由于张量形状中的一些不匹配,我得到了一个错误。

我替换了以下行:

与下面的行:

这给了我以下错误:

InvalidArgumentError(有关回溯,请参见上文):不兼容的形状:[32,5,1,256] 与 [16,1,1,256] [[节点:梯度/model_with_buckets/embedding_attention_seq2seq/embedding_attention_decoder/attention_decoder/Attention_0/add_grad/BroadcastGradientArgs = BroadcastGradientArgs[T =DT_INT32, _device="/job:localhost/replica:0/task:0/cpu:0"](梯度/model_with_buckets/embedding_attention_seq2seq/embedding_attention_decoder/attention_decoder/Attention_0/add_grad/Shape, gradients/model_with_buckets/embedding_attention_seq2seq/embedding_attention_decoder/attention_decoder /Attention_0/add_grad/Shape_1)]]

我知道这两种方法的输出是不同的,但我不知道如何修改注意力代码来合并它。如何将前向和后向状态都发送到注意力模块——我是否将两个隐藏状态连接起来?

0 投票
1 回答
1886 浏览

tensorflow - TensorFlow 注意 OCR 推理代码

我正在尝试在 tensorflow 模型https://github.com/tensorflow/models/tree/master/attention_ocr中运行注意力 ocr 。我可以找到用于在 FSNS 数据集上进行训练和评估的脚本,但它们没有在单个图像上运行推理的代码。我想用我的图像测试它,看看它的表现如何。这是我为推理部分尝试的内容,但出现错误“尝试使用未初始化的值 AttentionOcr_v1/conv_tower_fn/INCE/InceptionV3/Conv2d_1a_3x3/weights”

这是输出日志

0 投票
0 回答
496 浏览

python - Keras ValueError:预期 ndim=3,发现 ndim=4

在我的 Keras 模型中,我使用的是 TimeDistributed 包装器,但我不断收到形状不匹配错误。以下是图层:

我收到错误消息

ValueError:输入 0 与层 time_distributed_4 不兼容:预期 ndim=3,发现 ndim=4

如何调整编码器的形状以匹配双向层的输入?

0 投票
1 回答
307 浏览

python - 为什么注意力解码器的输出需要与注意力相结合

张量流中的 legacy_seq2seq

我的问题是,为什么我们需要将 cell_output 与 attns 结合,而不是仅仅使用 cell_output 作为输出?

谢谢

0 投票
1 回答
1251 浏览

python - 注意层抛出 TypeError: Permute 层不支持 Keras 中的遮罩

我一直在关注这篇文章,以便在我的模型上实现注意力层。LSTM

代码attention layer

我得到的错误:

文件“main_copy.py”,第 244 行,在 model = create_model(X_vocab_len, X_max_len, y_vocab_len, y_max_len, HIDDEN_DIM, LAYER_NUM) 文件“main_copy.py”,第 189 行,在 create_model attention_mul = attention_3d_block(temp) 文件“main_copy.py ”,第 124 行,在 attention_3d_block a = Permute((2, 1))(inputs) 文件“/root/.virtualenvs/keras_tf/lib/python3.5/site-packages/keras/engine/topology.py”,行597,调用 output_mask = self.compute_mask(inputs, previous_mask) 文件“/root/.virtualenvs/keras_tf/lib/python3.5/site-packages/keras/engine/topology.py”,第 744 行,在 compute_mask str(掩码))类型错误:图层 permute_1 不支持掩码,但传递了一个 input_mask:Tensor("merge_2/All:0", shape=(?, 15), dtype=bool)

我经历了这个线程,它说:

这是 Keras 源代码中的一个小改动(将 Lambda 层中的 supports_masking 类变量设置为 True 而不是 False)。否则没有办法做到这一点。不过,掩蔽并不是真的必要。

在哪里可以将supports_masking变量设置为 True?另外,还有其他解决方案吗?

0 投票
1 回答
287 浏览

python - 在 CNTK 中实现 Seq2Seq 时的多个轴问题

我正在尝试在 CNTK 中实现一个带有注意力的 Seq2Seq 模型,这与CNTK Tutorial 204非常相似。但是,几个小的差异会导致各种问题和错误消息,我不明白。这里有很多问题,它们可能是相互关联的,并且都源于我不明白的某件事。

注意(如果它很重要)。我的输入数据来自MinibatchSourceFromData,由适合 RAM 的 NumPy 数组创建,我不将其存储在 CTF 中。

因此,形状是[#, *](input_dim)[#, *](label_dim)

问题 1:当我运行CNTK 204 教程并使用 将其图形转储到.dot文件中cntk.logging.plot时,我看到它的输入形状是[#](-2,). 这怎么可能?

  • 序列轴(*)在哪里消失了?
  • 维度怎么可能是负数?

问题 2:在同一个教程中,我们有attention_axis = -3. 我不明白这一点。在我的模型中,有 2 个动态轴和 1 个静态轴,因此“倒数第三个”轴将是#批处理轴。但是绝对不应该在批处理轴上计算注意力。
我希望查看教程代码中的实际坐标轴可以帮助我理解这一点,但[#](-2,)上面的问题使这更加混乱。

设置attention_axis-2会出现以下错误:

在创建训练时间模型期间:

其中stab_result是解码器Stabilizer最后一层之前的右边。Dense我可以在点文件中看到,在实现的中间出现了大小为 1 的虚假尾随维度AttentionModel

设置attention_axis-1会出现以下错误:

其中 64 是 my attention_dim, 200 是 my attention_span。据我了解,*注意模型中的 elementwise 绝对不应该将这两者混为一谈,因此-1这里绝对不是正确的轴。

问题3:我上面的理解正确吗?什么应该是右轴,为什么它会导致上述两个异常之一?

感谢您的解释!

0 投票
0 回答
94 浏览

keras - keras 注意力模型:如何从注意力向量中动态提取向量

我重用了用 Keras 编写的逐字注意模型。

我有两个样本输入,input1大小:[批量大小*21*100],input2大小:[批量大小*2]。基本上,input1是一批句子对,input2是一个token位置列表,每一行包含第二个句子中start token和end token的位置。

对于 input1 中的每一行,在逐字注意操作之后,我得到了一个注意向量列表(大小:11*150),现在我想根据 input2 中的相应行r[]从中提取特定向量,我尝试了类似,但得到错误:rr[input[0]]

TypeError:列表索引必须是整数,而不是 TensorVariable。

谷歌搜索了几天,尝试了很多方法,但没有任何效果。有人有更好的主意吗?谢谢!

0 投票
1 回答
252 浏览

neural-network - Adding softmax significantly changes weight updates

I have a neural network of the form N = W1 * Tanh(W2 * I), where I is the Input Vector/Matrix. When I learn these weights the output has a certain form. However, when I add a normalization layer, for example, N' = Softmax( W1 * Tanh(W2 * I) ) however the in the output vector of N' a single element is close to 1 while the rest are almost zero. This is the case, not only with SoftMax() but with any normalizing layer. Is there any standard solution to such a problem?

0 投票
1 回答
1399 浏览

tensorflow - 如何在 keras 中执行逐行或逐列最大池化

我正在尝试在注意力层上执行逐行和逐列最大池化,如下面的链接所述: http ://www.dfki.de/~neumann/ML4QAseminar2016/presentations/Attentive-Pooling-Network.pdf(幻灯片- 15)

我正在使用文本数据集,其中一个句子被馈送到 CNN。句子的每个单词都被嵌入了。它的代码如下:

CNN 的输出是有形状的(无,256)。这充当注意力层的输入。谁能建议如何在 keras 中以 tensorflow 作为后端实现行明智或列明智的最大池化?

0 投票
0 回答
87 浏览

python-3.x - 使用注意力模型进行对象检测

我正在使用注意力模型来检测相机捕获图像中的对象。我遵循了 show-attend-and-tell (字幕生成)。但是我可以使用 show-attend-and-tell (caption generation) 找到图像中对象的确切位置吗?