我要做一个3d张量的平均值,其中第一个维度表示批处理的大小,第二个维度表示批处理中句子的最大长度(时间轴),最后一个维度表示嵌入维度。熟悉lstm的人可以通过tf.nn.emebedding_lookup
获得
例如:
Assume I have 3 sentences
[ [i, love, you,], [i, don't, love, you,], [i, always, love, you, so, much ]]
这里batch_size = 3
,max_length = 6
(第三句话)并假设embedding dimension = 100
。一般情况下,我们会把前两个句子填充起来,以匹配最大长度。现在,我需要平均每个单词的单词嵌入量。但是,如果我使用tf.减少总额这两个向量会考虑到第一个错误的句子。在tensorflow中有没有一种有效的方法可以做到这一点。在
方法如下。这有点复杂,但效果很好。在
一些函数是从https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/ops/rnn.py得到的。我建议执行与上述代码相同的导入。主要代码如下
这是主代码。所以要求一个3D矩阵的和,长度可变,如RNN中的,我们可以测试如下
^{pr2}$一个可能的解决方案是将原始句子(没有填充的句子)的长度传递给模型。这样我们就可以计算出每个句子的正确平均嵌入量。在
在预处理阶段(生成句子时),跟踪每个句子的长度。假设您用
generate_batch
函数生成句子,然后:现在,您可以将句子及其长度输入模型:
^{pr2}$现在可以使用模型中每个句子的长度:
相关问题 更多 >
编程相关推荐