2016-12-13 30 views
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)) 
+1

你能提供一些代碼嗎? – martianwars

回答

0

此觀測到的行爲通過降低學習速度解決。在這一變化之後,訓練損失和驗證困惑(大部分)一起移動。

相關問題