Мы использовали это в своем классе, и наш профессор сказал, что мы можем просто передать ему правильную форму (в комментарии говорится «список 1D размерных поплавков-тензоров с такой же длиной, что и логиты»). Это не помогает в том, что они означают, но, возможно, это поможет вам запустить ваш код. Работал для меня.
Этот код должен делать трюк: [tf.ones(batch_size, tf.float32) for _ in logits]
.
Edit: из кода TF:
for logit, target, weight in zip(logits, targets, weights):
if softmax_loss_function is None:
# TODO(irving,ebrevdo): This reshape is needed because
# sequence_loss_by_example is called with scalars sometimes, which
# violates our general scalar strictness policy.
target = array_ops.reshape(target, [-1])
crossent = nn_ops.sparse_softmax_cross_entropy_with_logits(
logit, target)
else:
crossent = softmax_loss_function(logit, target)
log_perp_list.append(crossent * weight)
Веса, которые передаются умножается на потерях для этого конкретного логита. Поэтому я думаю, что если вы хотите особо предположить, что вы можете увеличить вес выше 1.
Это немного помогает, но я пытаюсь понять больше о том, какова цель параметра веса, я не нахожу много обсуждений весов в функции потерь RNN, если мы не говорим о выходе слой. Вы случайно знаете ответ на правильный вопрос о форме, относящийся к тому, что означает длина? – TheM00s3
Я думаю, вы говорите о комментарии в коде? 'weight: List of 1D float-Tensors размером до одной длины, что и logits.' Является ли ваш вопрос об этом комментарии? –
это будет один. – TheM00s3