0

双方向 LSTM ネットワークをトレーニングしていますが、トレーニングすると、次のようになりました。

"
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 

これはテクニックの問題ですか、それともスキームの問題ですか?

4

1 に答える 1

2

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

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

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

于 2016-06-22T18:28:24.330 に答える