2017-11-11 13 views
0

私はケラスに小さなニューラルネットワークを持っています。ケラスロスとトレーニング中のval_loss

contextTrain, contextTest, utteranceTrain, utteranceTest = train_test_split(context, utterance, test_size=0.1, random_state=1) 
model = Sequential() 
model.add(LSTM(input_shape=contextTrain.shape[1:], return_sequences=True, units=300, activation="sigmoid", kernel_initializer="glorot_normal", recurrent_initializer="glorot_normal")) 
model.add(LSTM(return_sequences=True, units=300, activation="sigmoid", kernel_initializer="glorot_normal", recurrent_initializer="glorot_normal")) 
model.compile(loss="cosine_proximity", optimizer="adam", metrics=["accuracy"]) 
model.fit(contextTrain, utteranceTrain, epochs=5000, validation_data=(contextTest, utteranceTest), callbacks=[ModelCheckpoint("model{epoch:02d}.h5", monitor='val_acc', save_best_only=True, mode='max')]) 

コンテキストおよび発話は、例えば、形状のnumpyの配列であります(100,15,300)。 fisrt LSTMのInput_shapeは(15,300)でなければなりません。

私は何が起こったのかわからないけど、突然、それは訓練中に負の損失とval_lossを出力します。以前は陽​​性だった(約0.18程度)。 90個のサンプルについて

列車、10個のサンプル

エポック1/5000 90/90 [上有効======================= =======] - 5秒52ms /ステップ - 損失:-0.4729 - acc:0.0059 - val_loss:-0.4405 - val_acc:0.0133

エポック2/5000 90/90 [====== ========================] - 2Sの18ms /ステップ - 損失:-0.5091 - ACC:0.0089 - val_loss:-0.4658 - val_acc:0.0133

エポック5000分の3 90/90 [==============================] - 2Sの18ms /ステップ - 損失:-0.5204 - acc:0.0170 - val_loss:-0.4829 - val_acc:0.0200

エポック4/5000 90/90 [================== ==========] - 2Sの20ミリ秒/ステップ - 損失:-0.5296 - ACC:0.0244 - val_loss:-0.4949 - val_acc:0.0333

エポック5000分の5 90/90 [=== ===========================] - 2Sの20ミリ秒/ステップ - 損失:-0.5370 - ACC:0.0422 - val_loss:-0.5021 - val_acc :0.0400

それは何を意味するのでしょうか?考えられる理由は何ですか?

は、任意の返信

+0

答えが役に立つと分かった場合は、親切に受け入れてください - ありがとう – desertnaut

答えて

1

あなたの損失関数、cosine_proximityをありがとう確かに負の値を取ることができます。 Kerasの作成者Francois Cholletによれば、通常は負(Github comment)です:

損失は、最小化しようとしている単なるスカラーです。肯定的なのは ではありません!例えば、コサインの近接損失は、負のスカラーを最小化する によってできるだけ近くに近づけようとすると、通常 は負になります。ここで

も、値が負のコサイン近接を使用してanother example、です。

関連する問題