2016-06-21 85 views
0

我正在訓練的雙向LSTM網絡,但是當我訓練它,我得到這個如下的雙向LSTM沒有收斂:在Tensorflow

" 
Iter 3456, Minibatch Loss= 10.305597, Training Accuracy= 0.25000 
Iter 3840, Minibatch Loss= 22.018646, Training Accuracy= 0.00000 
Iter 4224, Minibatch Loss= 34.245750, Training Accuracy= 0.00000 
Iter 4608, Minibatch Loss= 13.833059, Training Accuracy= 0.12500 
Iter 4992, Minibatch Loss= 19.687658, Training Accuracy= 0.00000 
" 

即使迭代50 0000,損失和準確性幾乎相同。我的設置如下:

# Parameters 
learning_rate = 0.0001 
training_iters = 20000#120000 
batch_size = tf.placeholder(dtype=tf.int32)#24,128 
display_step = 16#10 
test_num = 275#245 
keep_prob = tf.placeholder("float") #probability for dropout 
kp = 1.0 

# Network Parameters 
n_input = 240*160 #28 # MNIST data input (img shape: 28*28) 
n_steps = 16 #28 # timesteps 
n_hidden = 500 # hidden layer num of features 
n_classes = 20 

這是技術或方案的問題?

回答

2

我會嘗試的第一件事是改變學習率,看看你是否可以減少損失。 將準確度與某些基線進行比較也許會有所幫助(例如,您是否比預測分類問題中最常見的類別要好)。

如果您的損失在廣泛的學習率上沒有下降,我會開始尋找代碼中的錯誤(例如更新權重實際運行的訓練操作,功能和標籤是否匹配,您的數據是否隨機化正確地......)。

如果技術(雙向LSTM)存在問題取決於您試圖完成的任務。如果您實際上將此應用於MNIST(基於您的代碼中的評論),那麼我寧願推薦一些卷積層和maxpool層而不是RNN。