0
我正在訓練LSTM並使用sampled_softmax_loss
計算每個紀元(如此多的文檔)之後的損失。我還在sequence_loss_by_example
的同一時間計算了一個未完成集的困惑度。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))
你能提供一些代碼嗎? – martianwars