LoginSignup
64
37

More than 5 years have passed since last update.

ディープラーニングのパラメーター数ってどうやって数えるんだっけという人へ

Last updated at Posted at 2019-01-14

新しい記事として更新しましたので下記をご覧ください
https://qiita.com/Phoeboooo/items/b92c35f6739a9e765a80

パラメータの数の計算まとめ

NN , CNN , Embedding , SimpleRNN, LSTM, GRU

CNN, NN(Dense)


model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu',
                        input_shape=(150, 150, 3)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(128, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(GlobalAveragePooling2D())
model.add(layers.Dense(32, activation='relu'))
model.add(layers.Dense(1, activation='sigmoid'))

* MaxPooling2Dは 2*2の範囲ごとの最大値, GlobalAveragePooling2Dは各チャンネルの平均を取るだけのため重みはなし

Conv2D(1つ目)

3 * 3 * 3 * 32 + 32 = 896

フィルターの縦 * フィルターの横 * 入力のチャンネル数 * 出力のチャンネル数 + バイアス(1チャンネルごとに1つ)

Conv2D(2つ目)

3 * 3 * 32 * 64 + 64 = 18496

フィルターの縦 * フィルターの横 * 入力のチャンネル数 * 出力のチャンネル数 + バイアス(1チャンネルごとに1つ)

Dense

128 * 32 + 32 = 4128

シンプルなニューラルネットワーク, バイアスを忘れずに

Embedding , SimpleRNN, LSTM, GRU

model = Sequential()
model.add(Embedding(4000,32,input_length=20))
model.add(LSTM(64))
#model.add(SimpleRNN(64))
#model.add(GRU(64))
model.add(Dense(3))
model.add(Activation("softmax"))

Embedding

4000 * 32 = 128000

・バイアスはない
・Embedding層は仕組みはニューラルネットワークだが、ワンホットベクトルを小さな(密な)ベクトルに変換するための層

SimpleRNN

32 * 64 + 64 * 64 + 64 = 6208

・入力に対しての重み
入力の次元数x隠れ状態の次元数 
→ 32*64

・隠れ状態に対しての重み
隠れ状態の次元数 x 隠れ状態の次元数
→ 64*64

・バイアス
隠れ状態の次元数
→ 64

LSTM

32 * 64 * 4 + 64 * 64 * 4 + 64 * 4 = 24832

・入力に対しての重み
入力の次元数 * 隠れ状態の次元数 * 4    (forgetに1つ、inputに2つ、outputに1つ)
→ 32 * 64 * 4

・隠れ状態に対しての重み
 隠れ状態(記憶セル)の次元数 * 隠れ状態の次元数 * 4   (上記のように4つ必要)
→ 64 * 64 * 4

・バイアス
隠れ状態の次元数 * 4      (上記のように4つ必要)
→ 64 * 4

GRU

32*64*3 + 64*64*3 + 64*3 = 18624

・入力に対しての重み
入力の次元数 * 隠れ状態の次元数 * 3    (リセットゲートで1つ、更新ゲートで2つ)
→ 32 * 64 * 3

・隠れ状態に対しての重み 
隠れ状態の次元数 * 隠れ状態の次元数 * 3  (上記のように3つ必要)
→ 64 * 64 * 3

・バイアス
隠れ状態の次元数 * 3  (上記のように3つ必要)
→ 64 * 3

64
37
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
64
37