我在内部使用一个小的自定义函数tf.contrib.seq2seq.sequence_loss(softmax_loss_function=[...])
作为自定义 sofmax_loss_function:
def reduced_softmax_loss(self, labels, logits):
top_logits, indices = tf.nn.top_k(logits, self.nb_top_classes, sorted=False)
top_labels = tf.gather(labels, indices)
return tf.nn.softmax_cross_entropy_with_logits_v2(labels=top_labels,
logits=top_logits)
但即使标签和 logits 应该具有相同的维度,执行后它会返回 and InvalidArgumentError
:
indices[1500,1] = 2158 is not in [0, 1600)
由于我的随机种子,数字会有所不同。
tf.gather
有没有我可以使用的其他功能?或者返回的值是假的?
如果我通过通常的 Tensorflow 函数,一切正常。
提前致谢!