147
151

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2019-02-04

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

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つ)
##図解
image.png

#Dense
128 * 32 + 32 = 4128

入力ユニット数 * 出力ユニット数 + バイアス(出力1ユニットごとに1つ)
シンプルなニューラルネットワーク, バイアスを忘れずに
##図解

image.png

#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層は全結合層だが、バイアスはない
・ワンホットベクトルを小さな(密な)ベクトルに変換するための層

##図解

image.png

#SimpleRNN
32 * 64 + 64 * 64 + 64 = 6208

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

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

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

##図解

image.png

#LSTM
32 * 64 * 4 + 64 * 64 * 4 + 64 * 4 = 24832

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

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

・バイアス
隠れ状態の次元数 * 4      (forgetに1つ、inputに2つ、outputに1つ)
→ 64 * 4

##図解
image.png

image.png

#GRU
32643 + 64643 + 64*3 = 18624

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

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

・バイアス
隠れ状態の次元数 * 3   (リセットゲートで1つ、更新ゲートで2つ)
→ 64 * 3

##図解
image.png

image.png

147
151
1

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
147
151

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?