# バッチサイズ、epoc、sample、iterationに関する知見 ## "sample","batch","epoch" の意味は? Kerasを正しく使うためには,以下の定義を知り,理解しておく必要があります: Sample: データセットの一つの要素. 例: 一つの画像は畳み込みネットワークの一つのsampleです 例: 一つの音声ファイルは音声認識モデルのための一つのsampleです Batch: Nのsampleのまとまり.batch内のサンプルは独立して並列に処理されます. 訓練中は,batchの処理結果によりモデルが1回更新されます. 一般的にbatchは,それぞれの入力のみの場合に比べて,入力データのばらつきをよく近似します.batchが大きいほど,その近似は精度が良くなります.しかし,そのようなbatchの処理には時間がかかるにも関わらず更新が一度しかされません.推論(もしくは評価,予測)のためには,メモリ領域を超えなくて済む最大のbatchサイズを選ぶのをおすすめします.(なぜなら,batchが大きければ,通常は高速な評価や予測につながるからです) Epoch: "データセット全体に対する1回の処理単位"と一般的に定義されている,任意の区切りのこと.訓練のフェーズを明確に区切って,ロギングや周期的な評価するのに利用されます. evaluation_data もしくは evaluation_split がKeras modelの fit 関数とともに使われるとき,その評価は,各epochが終わる度に行われます. Kerasでは,epochの終わりに実行されるように callbacks を追加することができます.これにより例えば,学習率を変化させることやモデルのチェックポイント(保存)が行えます. # 機械学習/ディープラーニングにおけるバッチサイズ、イテレーション数、エポック数の決め方 [参考記事](https://qiita.com/kenta1984/items/bad75a37d552510e4682)