Отбор проб Softmax Loss в тензорном потоке с RNN - проблема несоответствия размеров - PullRequest
0 голосов
/ 23 октября 2018

У меня есть реализация многоканального 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].

Я не понимаю, формы соответствуют аргументам функции, кто-то знает, что я могу делать неправильно?

Заранее спасибо!

1 Ответ

0 голосов
/ 23 октября 2018

Я нашел эту реализацию: https://github.com/olirice/sampled_softmax_loss и решил проблему, изменив метки

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