Kerasの主要レイヤー構造と実装方法

主要レイヤー概要

Kerasのcoreモジュールはニューラルネットワーク構築に不可欠な基本レイヤーを提供します。全結合層や活性化層など、代表的なレイヤーの実装方法を解説します。

全結合層(Dense)

keras.layers.Dense(
    neurons, 
    activation_fn=None, 
    use_bias=True,
    kernel_init='glorot_uniform',
    bias_init='zeros',
    kernel_regular=None,
    bias_regular=None
)

入力に対して出力 = activation_fn(入力・重み + バイアス)の演算を行います。入力次元が2より大きい場合、自動的に平坦化されます。

実装例

network = Sequential()
network.add(Dense(64, input_dim=32))  # 入力次元32, 出力次元64
network.add(Dense(32))

活性化層(Activation)

keras.layers.Activation(activation_fn)

前のレイヤーの出力に活性化関数を適用します。入力次元と出力次元は同一です。

ドロップアウト層(Dropout)

keras.layers.Dropout(drop_rate, seed_value=None)

過学習防止のため、指定確率でランダムにニューロンを無効化します。

平坦化層(Flatten)

keras.layers.Flatten()

多次元入力を1次元に変換します。バッチサイズは維持されます。

使用例

model.add(Conv2D(32, (3,3), input_shape=(128,128,3)))
model.add(Flatten())  # 3次元テンソルを1次元に変換

形状変換層(Reshape)

keras.layers.Reshape(target_dims)

入力テンソルを指定形状に変換します。次元推論に-1が使用可能です。

実装例

model.add(Reshape((8,4), input_shape=(32,)))
model.add(Reshape((-1,2,2)))  # 自動次元計算

次元並べ替え層(Permute)

keras.layers.Permute(dim_order)

指定パターンで入力次元を再配置します。RNNとCNNの接続時に有用です。

反復層(RepeatVector)

keras.layers.RepeatVector(repetitions)

入力を指定回数繰り返します。2D入力を3D出力に変換します。

カスタム層(Lambda)

keras.layers.Lambda(
    custom_function,
    output_dims=target_shape
)

任意の関数をレイヤーとして実装します。

使用例

# 二乗処理レイヤー
model.add(Lambda(lambda tensor: tensor ** 2))

# カスタム正規化レイヤー
def normalize(t):
    t -= K.mean(t, axis=-1, keepdims=True)
    return K.l2_normalize(t, axis=-1)
    
model.add(Lambda(normalize))

正則化層(ActivityRegularization)

keras.layers.ActivityRegularization(l1_factor=0.0, l2_factor=0.0)

出力値に基づいて損失関数を更新します。データ変換は行いません。

マスキング層(Masking)

keras.layers.Masking(mask_val=0.0)

指定値と一致する入力タイムステップを無視します。可変長シーケンス処理に有用です。

使用例

model.add(Masking(mask_value=0.0, input_shape=(steps, features)))
model.add(LSTM(64))

タグ: Keras ニューラルネットワーク 深層学習 Python AI開発

6月2日 23:53 投稿