1

私は出力が非常に単純な2ベクトル配列であるテンソルフローでRNNを実行しています。 RNNは、1を作るのに1つの値を選び、0にするために1つの値を選ぶだけです。しかし、RNNを通してバッチを実行すると、バッチのすべての入力に対して同じ出力を得るように見えます。たとえば、次のようにTensorflow LSTMネットワークはバッチ全体に対して同じ値を出力します

私の実際の出力ラベルがある場合:

[[ 1. 0.] 
[ 1. 0.] 
[ 0. 1.] 
[ 1. 0.] 
[ 1. 0.] 
[ 1. 0.] 
[ 1. 0.] 
[ 1. 0.] 
[ 1. 0.] 
[ 1. 0.] 
[ 1. 0.] 
[ 1. 0.] 
[ 1. 0.] 
[ 0. 1.] 
[ 0. 1.] 
[ 1. 0.] 
[ 1. 0.] 
[ 0. 1.] 
[ 1. 0.] 
[ 1. 0.] 
[ 1. 0.] 
[ 1. 0.]] 

マイRNNの出力は:明らかに間違っている

[[ 1.00000000e+00 7.93261263e-14] 
[ 1.00000000e+00 7.93261263e-14] 
[ 1.00000000e+00 7.93261263e-14] 
[ 1.00000000e+00 7.93261263e-14] 
[ 1.00000000e+00 7.93261263e-14] 
[ 1.00000000e+00 7.93261263e-14] 
[ 1.00000000e+00 7.93261263e-14] 
[ 1.00000000e+00 7.93261263e-14] 
[ 1.00000000e+00 7.93261263e-14] 
[ 1.00000000e+00 7.93261263e-14] 
[ 1.00000000e+00 7.93261263e-14] 
[ 1.00000000e+00 7.93261263e-14] 
[ 1.00000000e+00 7.93261263e-14] 
[ 1.00000000e+00 7.93261263e-14] 
[ 1.00000000e+00 7.93261263e-14] 
[ 1.00000000e+00 7.93261263e-14] 
[ 1.00000000e+00 7.93261263e-14] 
[ 1.00000000e+00 7.93261263e-14] 
[ 1.00000000e+00 7.93261263e-14] 
[ 1.00000000e+00 7.93261263e-14] 
[ 1.00000000e+00 7.93261263e-14] 
[ 1.00000000e+00 7.93261263e-14]] 

。私はという形のテンソルでRNNを供給していますが、012NRNNを実行するのにtf.nn.dynamic_rnn()を使用しています。私が試したことは何も動作していないようです。

私はこれに私の髪をリッピングしており、どんな助けも大歓迎です。

ありがとうございます!

答えて

4

エポック間のバッチでサンプルを再シャッフルしないかもしれないようです。これにより、(エラーの)最小化を、あなたが出てこないローカル最小値に導くことができます。

すべての繰り返しで同じ順序で入力を提供しないようにしてください。より賢明なものに収束する必要があります。

関連する問題