我正在训练一个LSTM,并使用sampled_softmax_loss来计算每个时代之后的损失(这么多文档)。我还计算了与sequence_loss_by_example同时保持的集合上的困惑.
损失在前几个时期减少--从1到2急剧下降.然后,它只是挂在相同的值附近(有时更少;有时更多)。另一方面,困惑确实在不断地减少。
为什么在困惑继续下降的同时,损失会停止减少?我预计两人都会持续下降。
代码如下所示:
total_steps = 0
total_cost = 0.
for batch in train_epoch:
total_steps += num_steps
loss = tf.nn.sampled_softmax_loss(...)
cost = tf.reduce_sum(loss) / batch_size
total_cost += cost
...
optimizer.apply_gradients(tf.gradients(cost, vars),...)
print("average loss = {}".format(total_cost / total_steps))
total_steps = 0
total_xentropy = 0.
for batch in valid_epoch:
total_steps += num_steps
loss = tf.nn.seq2seq.sequence_loss_by_example(...)
total_xentropy += tf.reduce_sum(loss) / batch_size
print("perplexity = {}".format(np.exp(total_xentropy / total_steps))发布于 2017-01-17 04:10:42
这种观察到的行为是通过降低学习率来解决的。在这一变化之后,训练的损失和验证的困惑(大部分)是同步的。
https://stackoverflow.com/questions/41126032
复制相似问题