使用 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])
我有一个具有可变序列长度的多对一 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])