2016-06-21 5 views
0

の双方向-LSTMに私は双方向LSTMネットワークを訓練していますが、私はそれを訓練するとき、私は以下のようにこれを得たNO収束: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

私がしようとする最初のことは、あなたが損失を減らすことができるかどうかを確認するために学習率を変えることです。 精度をいくつかのベースラインと比較することも役立ちます(たとえば、分類問題で最も頻度の高いクラスを予測するよりも良い)。

幅広い学習率で損失がまったく減少していない場合は、コード内のバグを探し始めるでしょう(たとえば、実際に更新されたウェイトを更新するトレーニングop、機能とラベルの一致、データのランダム化正しく、...)。

テクニックに問題がある場合(双方向LSTM)は、達成しようとしているタスクによって異なります。実際にこれをMNISTに(コード内のコメントに基づいて)適用している場合は、RNNよりもいくつかの畳み込みレイヤーとmaxpoolingレイヤーをお勧めします。