ProgbarLogger
verbose > 0
の場合にのみコールバックがモデルに追加されます。ソースコードtraining.pyで:
if verbose:
if steps_per_epoch is not None:
count_mode = 'steps'
else:
count_mode = 'samples'
callbacks += [cbks.ProgbarLogger(count_mode)]
だから、可能な回避策は次のとおりです。
- ビルトイン
ProgbarLogger
- サブクラス
ProgbarLogger
を抑制し、無視するようにコードを変更することがfit()
でverbose=0
を指定しますトレーニングメトリクス
- を呼び出すときにこのコールバックを追加する例えば210
、
from keras.callbacks import ProgbarLogger
class ValOnlyProgbarLogger(ProgbarLogger):
def __init__(self, verbose, count_mode='samples'):
# Ignore the `verbose` argument specified in `fit()` and pass `count_mode` upstream
self.verbose = verbose
super(ValOnlyProgbarLogger, self).__init__(count_mode)
def on_train_begin(self, logs=None):
# filter out the training metrics
self.params['metrics'] = [m for m in self.params['metrics'] if m.startswith('val_')]
self.epochs = self.params['epochs']
input_tensor = Input(shape=(256,))
out = Dense(10)(input_tensor)
model = Model(input_tensor, out)
model.compile(loss='mse', optimizer='adam', metrics=['mae', 'cosine'])
model.fit(X, Y, validation_data=(XX, YY), verbose=0,
callbacks=[ValOnlyProgbarLogger(verbose=1)])
訓練指標は現在、抑制されます。
Epoch 1/1
1000/1000 [==============================] - 0s 392us/step - val_loss: 0.2479 - val_mean_absolute_error: 0.3988 - val_cosine_proximity: -0.7022
(注)fit_generator
代わりのfit
を使用している場合、ユーザーが指定する必要がありますことをValOnlyProgbarLogger
を初期化するときはcount_mode='steps'
です。
ありがとうございます、それはかなりうまくいくでしょう。トレーニングメトリックの計算をまったくスキップできれば素晴らしいですが、検証時にのみもっと複雑な作業を行い、トレーニングを遅くすることはできません。私は、訓練時に特別なメトリック計算のコストにエポックエンドの余分な予測のコストを比重しなければならないと思う。 – filippo