【发布时间】:2016-12-07 06:48:01
【问题描述】:
考虑到序列的实际长度,我正在尝试进行平均操作。 (屏蔽零向量)
我的输入 sequence_outpus 是 (batch_size, max_len, dimensions)
我有一个张量,用于存储批次中每个序列的实际长度。我使用了https://danijar.com/variable-sequence-lengths-in-tensorflow/的函数
def length(sequence):
used = tf.sign(tf.reduce_max(tf.abs(sequence), reduction_indices=2))
length = tf.reduce_sum(used, reduction_indices=1)
length = tf.cast(length, tf.int64)
return length
我这样做:
lengths = length(sequence_outputs)
lengths = tf.cast(length, tf.float32)
lengths = tf.expand_dims(lengths,1)
sentence_outputs = tf.reduce_sum(sentence_outputs,1) / lengths
图表可以编译,但我得到的是 NaN 损失值。此外,在使用 eval() 进行调试时,我的长度变为负值。
这似乎是一个简单的问题,但我已经被这个问题困扰了一段时间,希望能得到一些帮助!
谢谢!
【问题讨论】:
标签: python tensorflow