Tensorflowの下でRNN中のBatch-sizeのテストと理解

1521 ワード

このノートはtensorflow 1に基づいている.4バージョン、シロレベル.コードはインターネットでダウンロードしたmnist手書きデジタル分類のLSTMで、2つの小さな場所を修正しました.
    x = tf.split(x, n_steps, 0)
    cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y, logits=pred))

- Batch-size


Batch_を大きくするSizeは何のメリットがありますか?メモリ使用率が向上し,大マトリクス乗算の並列化効率が向上した.epoch(フルデータセット)を1回完走するのに要する反復回数が減少し,同じデータ量に対する処理速度がさらに加速した.一定の範囲内で、一般的にBatch_Sizeが大きいほど,その決定した下降方向が正確になり,訓練振動が小さくなる.盲目的に増大するBatch_Sizeのデメリットは?メモリ使用率は向上しましたが、メモリ容量が耐えられない可能性があります.epoch(フルデータセット)を1回完走するのに要する反復回数が減少し,同じ精度を達成するには時間が大幅に増加し,パラメータの修正もより遅くなる.Batch_Sizeはある程度大きくなり,その決定した下降方向はほとんど変化しなくなった.
これは損失関数の局所優位性と「マルチピットマン」と局所優位性の「数が多すぎて選択しにくい」の間の競争であり、競争バランスポイントこそあなたの最終的な訓練値である.そのため、最終的な訓練値は分布であり、みんなは一般的に平均を取って自分のモデルが牛が多いことを証明している.物理的には,エネルギー(ピットが深い)とエントロピー(選択が多い)の競合結果であり,複雑なシステムでは,エネルギーとエントロピーは一生競合しており,損失関数の最小値を直接議論するよりも自由エネルギーの最小値の非凸問題における意義を議論することが意義がある.
異なるサイズのbatch_をテストしましたsizeが収束速度に及ぼす影響も、必ずしも正確ではない.特にバッチ数が大きい場合、前の2、3回の勾配方向の選択は収束速度にとって極めて重要であるが、バッチデータはランダムに選択されており、以下の表は大まかな参考とすることができる.
Batch-size
Iter tims when accuracy > 0.99
64
750
128
350
256
650
512
700
1024
700
2056
1000より大きい