2016/05/21 機械学習 名古屋 第4回勉強会
fig_6_3
fig_6_3_ja
↓
《略》
パディング:
参考:パディングなしの場合
ストライド:
↓
TensorFlow で書くと、こんな感じ(コードの一部):
# z1: shape が [*, W, W, K] の4次元 tensor
# weight_variable(): 指定したサイズの「重み」を定義する関数
# bias_variable(): 指定したサイズの「バイアス」を定義する関数
# f(): 活性化関数
h1 = weight_variable([H, H, K, M])
b1 = bias_variable([M])
u2 = tf.nn.conv2d(z1, h1, strides=[1, 1, 1, 1], padding='SAME') + b1
z2 = f(u2)
最大プーリング: $$ u_{ijk} = \max_{(p,q \in P_{ij})} z_{pqk} $$
平均プーリング: $$ u_{ijk} = \frac{1}{H^2} \sum_{(p,q \in P_{ij})} z_{pqk} $$
TensorFlow で書くと、こんな感じ(コードの一部):
# z1: shape が [*, W, W, K] の4次元 tensor
# 最大プーリング
z2 = tf.nn.max_pool(x, ksize=[1, H, H, 1], strides=[1, s, s, 1], padding='SAME')
# 平均プーリング
z2 = tf.nn.avg_pool(x, ksize=[1, H, H, 1], strides=[1, s, s, 1], padding='SAME')
おさらい(3.6.1):
正規化(normalization)(もしくは標準化(standardization)):
データの平均を0に(および分散を1に)なるよう変換すること。 データに偏りがある場合に実行する(詳細略)。
正規化層:
正規化を入力データに対して行うのではなく、画像1枚1枚に対して行う。
プーリング層と同様、重み(パラメータ)は固定(=学習の対象外)。
局所反応正規化:
TensorFlow に用意されている、正規化層を形成する仕組み。
(この書籍で説明されている 局所コントラスト正規化 と少し違う。代わりに利用出来る)
利用の仕方は次のような感じ(例):
# z1: shape が [*, W, W, K] の4次元 tensor
# 局所反応正規化
z2 = tf.nn.local_response_normalization(z1, 4, bias=1.0, alpha=1.0, beta=0.5)
# z2 = tf.nn.lrn(z1, 4, bias=1.0, alpha=1.0, beta=0.5) # ←でもOK
※ 6.6.1 局所コントラスト正規化、6.6.2 単一チャネル画像の正規化、6.6.3 多チャネル画像の正規化 は略
《略》
《略》