使用RNN在Tensorflow中采样的Softmax损失-尺寸不匹配问题

时间:2018-10-23 10:46:15

标签: python tensorflow rnn softmax

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

由于我有500课,并且想加快培训速度,所以我试图对softmax损失进行采样。

以下是我的输入参数形状

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].

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

谢谢!

1 个答案:

答案 0 :(得分:0)

我发现此实现:https://github.com/olirice/sampled_softmax_loss 并通过重塑标签解决了问题

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