主要レイヤー概要
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))