使用 RNN 在 Tensorflow 中采样 Softmax 损失 - 维度不匹配问题

Sampled Softmax Loss in Tensorflow with RNN - Dimensions mismatch problem

我有一个具有可变序列长度的多对一 RNN 的实现(一个句子分类问题)

我正在尝试实施采样 softmax 损失,因为我有 500 类 并且想加快训练速度。

以下是我输入的参数形状

WLast.shape
TensorShape([Dimension(500), Dimension(500)])

bLast.shape 
TensorShape([Dimension(500)])

labels.shape
TensorShape([Dimension(None), Dimension(500)])

pred_out.shape
TensorShape([Dimension(None), Dimension(500)])

Pred_out 是 RNN

的最后一个预测

问题是当我 运行:

cost = tf.nn.sampled_softmax_loss(WLast,bLast,labels,pred_out,10,500)

它给我这个错误:

InvalidArgumentError: Dimension must be 1 but is 500 for 'sampled_softmax_loss/ComputeAccidentalHits' (op: 'ComputeAccidentalHits') with input shapes: [?,500], [10].

我不明白,形状与函数的参数匹配,有人知道我做错了什么吗?

提前致谢!

我找到了这个实现:https://github.com/olirice/sampled_softmax_loss 并通过重塑标签解决了问题

labels = tf.reshape(tf.argmax(labels, 1), [-1,1])