2017-07-17 6 views
1

Iとして設定kerasモデルを持っているが(TF 1.2.1)以下:Kerasトレーニングループはどのように損失値をフィルタリングしますか?

import tensorflow.contrib.keras as keras 

model = keras.models.Sequential() 

... 

model.compile(loss=keras.losses.mean_squared_error, 
       optimizer=keras.optimizers.Adam(lr=1e-4)) 

model.summary() 


Layer (type)     Output Shape    Param # 
================================================================= 
conv2d_1 (Conv2D)   (None, 29, 29, 64)  6336  
_________________________________________________________________ 
conv2d_2 (Conv2D)   (None, 13, 13, 128)  204928  
_________________________________________________________________ 
conv2d_3 (Conv2D)   (None, 11, 11, 256)  295168  
_________________________________________________________________ 
conv2d_4 (Conv2D)   (None, 5, 5, 256)   590080  
_________________________________________________________________ 
flatten_1 (Flatten)   (None, 6400)    0   
_________________________________________________________________ 
dense_1 (Dense)    (None, 2)     12802  
================================================================= 
Total params: 1,109,314 
Trainable params: 1,109,314 
Non-trainable params: 0 

出力は、単純なフロートベクトルであり、所望のように、それが収束します。損失は​​平均平方誤差です。出力例:

18/100 [====>.........................] - ETA: 30s - loss: 31.5118 
19/100 [====>.........................] - ETA: 29s - loss: 30.7577 
20/100 [=====>........................] - ETA: 29s - loss: 29.7815 
21/100 [=====>........................] - ETA: 28s - loss: 29.0535 
22/100 [=====>........................] - ETA: 28s - loss: 28.1963 
23/100 [=====>........................] - ETA: 28s - loss: 27.3314 
24/100 [======>.......................] - ETA: 28s - loss: 26.7219 
25/100 [======>.......................] - ETA: 28s - loss: 25.9702 
26/100 [======>.......................] - ETA: 27s - loss: 25.4181 
27/100 [=======>......................] - ETA: 27s - loss: 25.0638 
28/100 [=======>......................] - ETA: 27s - loss: 24.6081 
29/100 [=======>......................] - ETA: 26s - loss: 24.0928 

損失は着実に減少しているようです。私は本当の損失([email protected]_batch_end)を見たときしかし、それはとてもスムーズではありません。

25.473383 
28.051779 
20.519075 
13.204493 
20.74946 
21.246254 
25.611149 
13.194682 
13.268744 
15.408422 
17.183851 
11.232637 
14.493115 
10.196851 

私はKerasソースコードで掘ることを試みたが、ボンネットの下に何が起こっているのか理解できませんでした。 Kerasは実際の損失をどのようにフィルタリングしますか?どこでソースコードを見つけることができますか?

ありがとうございます!

答えて

0

実際にプログバーに表示されるのは、印刷時に特定のエポックで実行されたすべてのバッチに対する損失の平均です。 (2バッチ後の最初の2平均、3エポック後の最初の3平均など)。したがって、最初にnの損失値を超えて平均をとることによって、n-thエポック後に印刷された値を得ることができます。 hereについてはProgbarの定義で読むことができます。

+0

入手しました。ありがとう! – Wilco

関連する問題