Keras-layers
ケラス-レイヤー
以前に学習したように、KerasレイヤーはKerasモデルの主要なビルディングブロックです。 各層は入力情報を受け取り、何らかの計算を行い、最終的に変換された情報を出力します。 1つのレイヤーの出力は、その入力として次のレイヤーに流れ込みます。 この章では、レイヤーの詳細について学びます。
前書き
Kerasレイヤーは、入力データの構造を理解するために 入力の形状(input_shape) を必要とし、各入力の重みを設定する initializer を必要とし、最終的に出力を変換して非線形にするためにアクティベーターを必要とします。 その間、制約は、生成される入力データの重みの範囲を制限および指定し、レギュライザーは、最適化プロセス中に重みにペナルティを動的に適用することにより、レイヤー(およびモデル)を最適化しようとします。
要約すると、Kerasレイヤーは、完全なレイヤーを作成するために最低限の詳細以下を必要とします。
- 入力データの形状
- 層のニューロン/ユニットの数
- 初期化子
- レギュラライザー
- 制約
- アクティベーション
次の章で基本的な概念を理解しましょう。 基本的な概念を理解する前に、シーケンシャルモデルAPIを使用して単純なKerasレイヤーを作成し、Kerasモデルとレイヤーがどのように機能するかを理解してみましょう。
どこで、
- *行1-5 *は必要なモジュールをインポートします。
- *行7 *は、シーケンシャルAPIを使用して新しいモデルを作成します。
- 行9 *は新しい *Dense レイヤーを作成し、モデルに追加します。 Dense は、Kerasが提供するエントリーレベルのレイヤーで、ニューロンまたはユニットの数(32)を必須パラメーターとして受け入れます。 レイヤーが最初のレイヤーの場合は、*入力形状(16、)*も指定する必要があります。 それ以外の場合は、前のレイヤーの出力が次のレイヤーの入力として使用されます。 他のすべてのパラメーターはオプションです。
- 最初のパラメーターは単位(ニューロン)の数を表します。
- input_shape は入力データの形状を表します。
- kernel_initializer は、使用するイニシャライザを表します。 he_uniform 関数が値として設定されています。
- kernel_regularizer は、使用される regularizer を表します。 値として設定されるものはありません。
- kernel_constraint は、使用される制約を表します。 MaxNorm 関数が値として設定されます。
- activation は、使用するアクティベーションを表します。 relu機能が値として設定されています。
- Line 10 は、16ユニットの2番目の Dense レイヤーを作成し、アクティベーション関数として relu を設定します。
- Line 11 は、8ユニットの最終的な高密度レイヤーを作成します。
レイヤーの基本概念
レイヤーの基本的な概念と、Kerasが各概念をどのようにサポートするかを理解しましょう。
入力形状
機械学習では、テキスト、画像、動画などのすべてのタイプの入力データが最初に数値の配列に変換され、次にアルゴリズムにフィードされます。 入力数値は、1次元配列、2次元配列(行列)、または多次元配列です。 整数のタプルである shape を使用して次元情報を指定できます。 たとえば、*(4,2)*は4行2列の行列を表します。
同様に、*(3,4,2)*は、4x2マトリックス(2行と4列)の3つのコレクションを持つ3次元マトリックスです。
from keras.models import Sequential from keras.layers import Activation、Dense from keras import initializers
my_init = initializers.Zeros()model = Sequential()model.add(Dense(512、activation = 'relu'、input_shape =(784、)、kernel_initializer = my_init))
from keras.models import Sequential from keras.layers import Activation、Dense from keras import initializers
my_init = initializers.Ones()model.add(Dense(512、activation = 'relu'、input_shape =(784、)、kernel_initializer = my_init))
from keras.models import Sequential from keras.layers import Activation、Dense from keras import initializers
my_init = initializers.Constant(value = 0)model.add(Dense(512、activation = 'relu'、input_shape =(784、)、kernel_initializer = my_init))
from keras.models import Sequential from keras.layers import Activation、Dense from keras import initializers
my_init = initializers.RandomNormal(mean = 0.0、stddev = 0.05、seed = None)model.add(Dense(512、activation = 'relu'、input_shape =(784、)、kernel_initializer = my_init))
kerasインポート初期化子から
my_init = initializers.RandomUniform(minval = -0.05、maxval = 0.05、seed = None)model.add(Dense(512、activation = 'relu'、input_shape =(784、)、kernel_initializer = my_init))
from keras.models import Sequential from keras.layers import Activation、Dense from keras import initializers
my_init = initializers.TruncatedNormal(mean = 0.0、stddev = 0.05、seed = None model.add(Dense(512、activation = 'relu'、input_shape =(784、)、kernel_initializer = my_init))
from keras.models import Sequential from keras.layers import Activation、Dense from keras import initializers
my_init = initializers.VarianceScaling(scale = 1.0、mode = 'fan_in'、distribution = 'normal'、seed = None)model.add(Dense(512、activation = 'relu'、input_shape =(784、)、skernel_initializer = my_init ))
stddev = sqrt(scale/n)
制限= sqrt(3* スケール/n)
from keras.models import Sequential from keras.layers import Activation、Dense from keras import initializers
my_init = initializers.RandomUniform(minval = -0.05、maxval = 0.05、seed = None)model.add(Dense(512、activation = 'relu'、input_shape =(784、)、kernel_initializer = my_init))
stddev = sqrt(1/fan_in)
from keras.models import Sequential from keras.layers import Activation、Dense from keras import initializers
my_init = initializers.lecun_uniform(seed = None)model.add(Dense(512、activation = 'relu'、input_shape =(784、)、kernel_initializer = my_init))
limit = sqrt(3/fan_in)
from keras.models import Sequential from keras.layers import Activation、Dense from keras import initializers
my_init = initializers.glorot_normal(seed = None)model.add(Dense(512、activation = 'relu'、input_shape =(784、)、kernel_initializer = my_init))
stddev = sqrt(2/(fan_in + fan_out))
from keras.models import Sequential from keras.layers import Activation、Dense from keras import initializers
my_init = initializers.glorot_uniform(seed = None)model.add(Dense(512、activation = 'relu'、input_shape =(784、)、kernel_initializer = my_init))
制限= sqrt(6/(fan_in + fan_out))
from keras.models import Sequential from keras.layers import Activation、Dense from keras import initializers
my_init = initializers.RandomUniform(minval = -0.05、maxval = 0.05、seed = None)model.add(Dense(512、activation = 'relu'、input_shape =(784、)、kernel_initializer = my_init))
stddev = sqrt(2/fan_in)
from keras.models import Sequential from keras.layers import Activation、Dense from keras import initializers
my_init = initializers.he_normal(seed = None)model.add(Dense(512、activation = 'relu'、input_shape =(784、)、kernel_initializer = my_init))
制限= sqrt(6/fan_in)
from keras.models import Sequential from keras.layers import Activation、Dense from keras import initializers
my_init = initializers.Orthogonal(gain = 1.0、seed = None)model.add(Dense(512、activation = 'relu'、input_shape =(784、)、kernel_initializer = my_init))
from keras.models import Sequential from keras.layers import Activation、Dense from keras import initializers
my_init = initializers.Identity(gain = 1.0)model.add(Dense(512、activation = 'relu'、input_shape =(784、)、kernel_initializer = my_init))
from keras.models import Sequential from keras.layers import Activation、Dense from keras import initializers
my_init = initializers.Identity(gain = 1.0)model.add(Dense(512、activation = 'relu'、input_shape =(784、)、kernel_initializer = my_init))
from keras.models import Sequential from keras.layers import Activation、Dense from keras import constraint
my_constrain = constraint.UnitNorm(axis = 0)model = Sequential()model.add(Dense(512、activation = 'relu'、input_shape =(784、)、kernel_constraint = my_constrain))
from keras.models import Sequential from keras.layers import Activation、Dense from keras import constraint
my_constrain = constraint.MaxNorm(max_value = 2、axis = 0)model = Sequential()model.add(Dense(512、activation = 'relu'、input_shape =(784、)、kernel_constraint = my_constrain))
from keras.models import Sequential from keras.layers import Activation、Dense from keras import constraint
my_constrain = constraint.MinMaxNorm(min_value = 0.0、max_value = 1.0、rate = 1.0、axis = 0)model = Sequential()model.add(Dense(512、activation = 'relu'、input_shape =(784、)、kernel_constraint = my_constrain))
keras.modelsからインポートimport keras.layersからシーケンシャルインポートアクティベーション、kerasから高密度インポートレギュラライザー
my_regularizer = regularizers.l1(0。)model = Sequential()model.add(Dense(512、activation = 'relu'、input_shape =(784、)、kernel_regularizer = my_regularizer))
keras.modelsからインポートimport keras.layersからシーケンシャルインポートアクティベーション、kerasから高密度インポートレギュラライザー
my_regularizer = regularizers.l2(0。)model = Sequential()model.add(Dense(512、activation = 'relu'、input_shape =(784、)、kernel_regularizer = my_regularizer))
keras.modelsからインポートimport keras.layersからシーケンシャルインポートアクティベーション、kerasから高密度インポートレギュラライザー
my_regularizer = regularizers.l2(0。)model = Sequential()model.add(Dense(512、activation = 'relu'、input_shape =(784、)、kernel_regularizer = my_regularizer))
結果=アクティベーション(SUMOF(入力*重み)+バイアス)
keras.modelsインポートから順次keras.layersから順次インポートアクティベーション、高密度
モデル= Sequential()model.add(Dense(512、activation = 'linear'、input_shape =(784、)))
keras.modelsインポートから順次keras.layersから順次インポートアクティベーション、高密度
モデル= Sequential()model.add(Dense(512、activation = 'elu'、input_shape =(784、)))
keras.modelsインポートから順次keras.layersから順次インポートアクティベーション、高密度
モデル= Sequential()model.add(Dense(512、activation = 'selu'、input_shape =(784、)))
keras.modelsインポートから順次keras.layersから順次インポートアクティベーション、高密度
モデル= Sequential()model.add(Dense(512、activation = 'relu'、input_shape =(784、)))
keras.modelsインポートから順次keras.layersから順次インポートアクティベーション、高密度
モデル= Sequential()model.add(Dense(512、activation = 'softmax'、input_shape =(784、)))
keras.modelsインポートから順次keras.layersから順次インポートアクティベーション、高密度
モデル= Sequential()model.add(Dense(512、activation = 'softplus'、input_shape =(784、)))
keras.modelsインポートから順次keras.layersから順次インポートアクティベーション、高密度
モデル= Sequential()model.add(Dense(512、activation = 'softsign'、input_shape =(784、)))
from keras.models import Sequential from keras.layers import Activation、Dense model = Sequential()model.add(Dense(512、activation = 'tanh'、input_shape =(784、)))
keras.modelsインポートから順次keras.layersから順次インポートアクティベーション、高密度
モデル= Sequential()model.add(Dense(512、activation = 'sigmoid'、input_shape =(784、)))
keras.modelsインポートから順次keras.layersから順次インポートアクティベーション、高密度
モデル= Sequential()model.add(Dense(512、activation = 'hard_sigmoid'、input_shape =(784、)))
keras.modelsインポートから順次keras.layersから順次インポートアクティベーション、高密度
モデル= Sequential()model.add(Dense(512、activation = 'exponential'、input_shape =(784、)))