LoginSignup
0
0

More than 3 years have passed since last update.

kerasのCSVLoggerでflushする方法

Posted at

CSVLoggerの問題点

kerasのCSVLoggerは学習途中のログをcsv形式でファイルに書き出してくれる優れものですが、一点不満があります。それはファイルに書き出されるタイミングが学習終了後だということです。これは出力がバッファに溜まって、いっぱいになるまで書き出されないのが原因です。このため、学習処理がクラッシュしたときに内容が失われることがあり、困っていました。通常、この問題を解決するには書き出したいタイミングで出力ストリームに対してflush()をすれば良いのですが、CSVLoggerを改造するのはやっかいです。

簡単な解決法

簡便な方法を見つけましたので、共有します。実際にはflush()するわけではありませんが、結果的に解決する方法です。

csv_logger = CSVLogger(file_name, monitor='val_loss', save_best_only=True)
csv_logger._open_args('buffering') = 100

バッファのサイズを設定する方法をソースコードから見つけました。上記のようにして設定します。ここでは100バイトに設定しています。ちなみに0バイトを指定するとエラーになります。

以上です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0