ディープラーニング - パラメータ量とモデルサイズと理論計算量

1. パラメータの量
とは、パラメータの数、つまりモデルに含まれるパラメータの数を指します\color{blue}{パラメータの数、つまりモデルに含まれるパラメータの数を指します}パラメータの数、つまりモデルに含まれるパラメータの数を指しますユニット M (10 の 6 乗)。

1.1. 畳み込み層パラメータの計算
畳み込み層で注意する必要があるパラメータは conv(kernel_size, in_channel, out_channel)、つまり畳み込みカーネルのサイズ、入力および出力チャネルの数、およびバイアス。
計算式: param = (k_size * k_size * in_channel +bias) * out_channel
例:
画像サイズ: 640 * 640 * 3
コンボリューションカーネルサイズ: 3 * 3 入力
チャンネルサイズ: 3
出力チャンネルサイズ: 64
パラメーターの数: param = (3 * 3 * 3 + 1) * 64=1792

1.2. 全結合層パラメータの計算
全結合層で注意すべきパラメータは、入力ニューロン数 M と出力ニューロン数 N です。
計算式: param = (M + 1) * N
例:
入力ニューロン: 3
出力ニューロン: 5
パラメーターの数: param=(3+1)*5=20

トレーニング中は一度にbatch_sizeの画像を入力する必要があるため、batch_sizeを乗算する必要があります。

1.3. 出力レイヤーのパラメーター計算は、
特徴マップのパラメーター量を指します\color{blue}{特徴マップのパラメーター量を指します}は、特徴マップのパラメータ量を指します
モデルによって出力される特徴マップのサイズは HxW、チャネル数は C であるため、パラメーターの総数は CxHxW です。

計算式:param = H * W * C

1.4. トレーニングとテストのパラメータの量 トレーニングでは
一度にbatch_sizeのサンプルを入力する必要がありますが、パラメータの量には影響しません\color{blue}{パラメータの量には影響しません}モデルパラメータの同じセットが異なるサンプルに同時に作用し、すべてのサンプルで得られた損失関数値を合計し、最後に勾配に従ってパラメータを更新するため、パラメータの量には影響しません降下法。

2. モデル サイズ
とは、モデルのサイズ、つまりモデルが占有するストレージ スペースを指します\color{blue}{モデルのサイズ、つまりモデルが占有するストレージ スペースを指します}モデルのサイズ、つまりモデルが占有する記憶領域を指します単位 MB (MByte の略):

深層学習ニューラル ネットワークでは、最も一般的なデータ形式は float32 で、4 バイト (Byte) を占有します。同様に、float16 は 2 バイトを占有します。1024 バイトは 1KB、1024x1024 バイトは 1MB です。この場合、10000 個のパラメータを保存するのに必要なメモリ サイズは 10000x4 バイト、つまり約 39KB になります。1M(100万)パラメータを保存するのに必要なメモリサイズは39x100/1024MB、つまり約3.8MBです。ディープラーニングニューラルネットワークのパラメータ量は通常100万を超えるため、3.8MBを基本単位とみなすことができます。つまり、100万の数値ごとに3.8MBが必要です。

ストレージ スペースを必要とするのはモデル パラメーターだけではなく、特徴マップの各要素、トレーニング中に逆伝播によって計算された重み勾配も同じストレージ スペースを必要とし、勾配の数はモデル パラメーターの数と同じであることに注意してください。パラメータは更新するためにグラデーションが必要です。\color{blue}{モデルのパラメーターだけでなく、特徴マップの各要素、トレーニング中にバックプロパゲーションによって計算される重み勾配も同じ記憶域が必要であり、勾配の数も同じであることに注意してください。各パラメータを更新するには勾配が必要なため、モデル パラメータの値が異なります。}ストレージ スペースを必要とするのはモデル パラメーターだけではなく、特徴マップの各要素、トレーニング中に逆伝播によって計算された重み勾配も同じストレージ スペースを必要とし、勾配の数はモデル パラメーターの数と同じであることに注意してください。パラメータは更新するためにグラデーションが必要です。

3. 理論計算量
FLOPs,s とは、秒、つまり 1 秒あたりの浮動小数点演算の回数を意味し、ネットワークモデルの計算量を考えるための基準です。単位はパラメータ量の単位と同じで、大きなモデルの単位は通常 G、小さなモデルの単位は通常 M です。
例:
入力: N * H * W
出力: M * H * W
フィルター: K * K
パラメーター: N * K * K * M
FLOPs: W * H * N * K * K * M
加算を追加する場合: (( K * K + 1) * N+ (N - 1)) * W * H * M
このうち、(K * K + 1) はコンボリューションカーネルの計算時にバイアスを重畳することを意味し、N 倍することを意味します入力のチャネル方向の積、つまり積のセット N - 1 は、一連の畳み込みの後、N 個の結果に対して N-1 回の加算が実行され、結果が重ね合わされることを意味します (K * K + 1) * N + (N - 1) は、特徴マップが最終的に収束することを意味します。 上の点に W を乗算します。 * H * M は、最終出力特徴マップ内のすべての点の数を表します。

重みパラメータを更新するための逆伝播のプロセスにも計算が必要であることに注意してください。\color{blue}{重みパラメータを更新するための逆伝播のプロセスにも計算が必要であることに注意してください。}重みパラメータを更新するための逆伝播のプロセスにも計算が必要であることに注意してください。

参考:
https://www.jianshu.com/p/4afe8308dab1
https://blog.csdn.net/suiyingy/article/details/125173843
https://www.pythonheidong.com/blog/article/1370711/dd18f8f5f126ea76beb6/
http://events.jianshu.io/p/41c1ab51467d
https://blog.csdn.net/dhy5710/article/details/127520025
https://www.pudn.com/news/6228c58d9ddf223e1ad04a1e.html

おすすめ

転載: blog.csdn.net/weixin_40826634/article/details/128164063