[source]

Dense

keras.layers.core.Dense(units, activation=None, use_bias=True, kernel_initializer='glorot_uniform', bias_initializer='zeros', kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, bias_constraint=None)

通常の全結合ニューラルネットワークレイヤー.

Denseが実行する操作:output = activation(dot(input, kernel) + bias)ただし,activationactivation引数として渡される要素単位の活性化関数で,kernelはレイヤーによって作成された重み行列であり,biasはレイヤーによって作成されたバイアスベクトルです.(use_biasTrueの場合にのみ適用されます).

  • Note:レイヤーへの入力のランクが2より大きい場合は,kernelを使用した最初のドット積の前に平坦化されます.

# as first layer in a sequential model:
model = Sequential()
model.add(Dense(32, input_shape=(16,)))
# now the model will take as input arrays of shape (*, 16)
# and output arrays of shape (*, 32)

# after the first layer, you don't need to specify
# the size of the input anymore:
model.add(Dense(32))

引数

  • units:正の整数,出力空間の次元数
  • activation: 使用する活性化関数名 (activationsを参照) もしあなたが何も指定しなければ,活性化は適用されない. (すなわち,"線形"活性化: a(x) = x).
  • use_bias: レイヤーがバイアスベクトルを使用するかどうか.
  • kernel_initializerkernel重み行列の初期化(initializationsを参照)
  • bias_initializer: バイアスベクトルの初期化(initializationsを参照)
  • kernel_regularizerkernel重み行列に適用される正則化関数(regularizersを参照)
  • bias_regularizer: バイアスベクトルに適用される正則化関数(regularizersを参照)
  • activity_regularizer: レイヤーの出力に適用される正則化関数("activation")(regularizersを参照)
  • kernel_constraintkernel重み行列に適用される制約関数(constraintsを参照)
  • bias_constraint: バイアスベクトルに適用される制約関数(constraintsを参照)

入力のshape

以下のshapeを持つn階テンソル: (batch_size, ..., input_dim). 最も一般的なのは以下のshapeを持つ2階テンソル: (batch_size, input_dim)

出力のshape

以下のshapeを持つn階テンソル: (batch_size, ..., units). 例えば,以下のshapeを持つ2階テンソル (batch_size, input_dim)の入力に対して,アウトプットは以下のshapwを持つ(batch_size, units)


[source]

Activation

keras.layers.core.Activation(activation)

出力に活性化関数を適用する.

引数

  • activation: 使用する活性化関数名 (activationsを参照), もしくは,TheanoかTensorFlowオペレーション.

入力のshape

任意.モデルの最初のレイヤーとしてこのレイヤーを使う時,キーワード引数input_shape(整数のタプルはサンプルの軸(axis)を含まない.)を使う.

出力のshape

入力と同じshape.


[source]

Dropout

keras.layers.core.Dropout(rate, noise_shape=None, seed=None)

入力にドロップアウトを適用する.ドロップアウトは,訓練時のそれぞれの更新において入力ユニットのrateをランダムに0にセットすることであり,それは過学習を防ぐのを助ける.

引数

  • rate: 0と1の間の浮動小数点数.入力ユニットをドロップする割合.
  • noise_shape: 入力と乗算されるバイナリドロップアウトマスクのshapeは1階の整数テンソルで表す.例えば入力のshapeを(batch_size, timesteps, features)とし,ドロップアウトマスクをすべてのタイムステップで同じにしたい場合,noise_shape=(batch_size, 1, features)を使うことができる.
  • seed: random seedとして使うPythonの整数.

参考文献


[source]

Flatten

keras.layers.core.Flatten()

入力を平滑化する.バッチサイズに影響されない.

model = Sequential()
model.add(Conv2D(64, (3, 3), input_shape=(3, 32, 32)))
# now: model.output_shape == (None, 64, 32, 32)

model.add(Flatten())
# now: model.output_shape == (None, 65536)

[source]

Reshape

keras.layers.core.Reshape(target_shape)

あるshapeに出力を変形する.

引数

  • target_shape: ターゲットのshape.整数のタプル,サンプルの次元を含まない(バッチサイズ).

入力のshape

入力のshapeのすべての次元は固定されなければならないが,任意. モデルの最初のレイヤーとしてこのレイヤーを使うとき,キーワード引数input_shape(整数のタプルはサンプルの軸を含まない.)を使う.

出力のshape

(batch_size,) + target_shape

# as first layer in a Sequential model
model = Sequential()
model.add(Reshape((3, 4), input_shape=(12,)))
# now: model.output_shape == (None, 3, 4)
# note: `None` is the batch dimension

# as intermediate layer in a Sequential model
model.add(Reshape((6, 2)))
# now: model.output_shape == (None, 6, 2)

# also supports shape inference using `-1` as dimension
model.add(Reshape((-1, 2, 2)))
# now: model.output_shape == (None, 3, 2, 2)

[source]

Permute

keras.layers.core.Permute(dims)

与えられたパターンにより入力の次元を入れ替える.

例えば,RNNsやconvnetsの連結に対して役立ちます.

model = Sequential()
model.add(Permute((2, 1), input_shape=(10, 64)))
# now: model.output_shape == (None, 64, 10)
# note: `None` is the batch dimension

引数

  • dims: 整数のタプル.配列パターン,サンプルの次元を含まない.添字は1で始まる.例えば,(2, 1)は入力の1番目と2番目の次元を入れ替える.

入力のshape

任意. モデルの最初のレイヤーとしてこのレイヤーを使う時,キーワード引数input_shape(整数のタプルはサンプルの軸を含まない)を使う.

出力のshape

入力のshapeと同じだが,特定のパターンにより並べ替えられた次元を持つ.


[source]

RepeatVector

keras.layers.core.RepeatVector(n)

n回入力を繰り返す.

model = Sequential()
model.add(Dense(32, input_dim=32))
# now: model.output_shape == (None, 32)
# note: `None` is the batch dimension

model.add(RepeatVector(3))
# now: model.output_shape == (None, 3, 32)

引数

  • n: 整数,繰り返し因数.

入力のshape

(num_samples, features)のshapeを持つ2階テンソル.

出力のshape

(num_samples, n, features)のshapeを持つ3階テンソル.


[source]

Lambda

keras.layers.core.Lambda(function, output_shape=None, mask=None, arguments=None)

レイヤーオブジェクトのように,任意の式をラップする.

# add a x -> x^2 layer
model.add(Lambda(lambda x: x ** 2))
# add a layer that returns the concatenation
# of the positive part of the input and
# the opposite of the negative part

def antirectifier(x):
    x -= K.mean(x, axis=1, keepdims=True)
    x = K.l2_normalize(x, axis=1)
    pos = K.relu(x)
    neg = K.relu(-x)
    return K.concatenate([pos, neg], axis=1)

def antirectifier_output_shape(input_shape):
    shape = list(input_shape)
    assert len(shape) == 2  # only valid for 2D tensors
    shape[-1] *= 2
    return tuple(shape)

model.add(Lambda(antirectifier,
                 output_shape=antirectifier_output_shape))

引数

  • function: 評価される関数.第1引数として入力テンソルを取る
  • output_shape: 関数からの期待される出力のshape.Theanoを使用する場合のみ関連します.タプルもしくは関数. タプルなら,入力に近いほうの次元だけを指定する,データサンプルの次元は入力と同じ: output_shape = (input_shape[0], ) + output_shape か入力が None でかつサンプル次元もNoneoutput_shape = (None, ) + output_shape のどちらかが推測される. 関数なら,入力のshapeの関数としてshape全体を指定する: output_shape = f(input_shape)
  • arguments: 関数に通されるキーワード引数の追加辞書

入力のshape

任意.モデルの最初のレイヤーとしてこのレイヤーを使う時,キーワード引数input_shape(整数のタプル,サンプルの軸(axis)を含まない)を使う.

出力のshape

output_shape引数によって特定される(TensorFlowを使用していると自動推論される).


[source]

ActivityRegularization

keras.layers.core.ActivityRegularization(l1=0.0, l2=0.0)

コスト関数に基づく入力アクティビティに更新を適用するレイヤー

引数

  • l1: L1正則化係数(正の浮動小数点数).
  • l2: L2正則化係数(正の浮動小数点数).

入力のshape

任意.モデルの最初のレイヤーとしてこのレイヤーを使う時,キーワード引数input_shape(整数のタプル,サンプルの軸(axis)を含まない)を使う.

出力のshape

入力と同じshape.


[source]

Masking

keras.layers.core.Masking(mask_value=0.0)

スキップされるタイムステップを特定するためのマスク値を使うことによって入力シーケンスをマスクする.

入力テンソル(テンソルの次元 #1)のそれぞれのタイムステップに対して, もしそのタイムステップの入力テンソルのすべての値がmask_valueに等しいなら,そのときそのタイムステップはすべての下流レイヤー(それらがマスキングをサポートしている限り)でマスク(スキップ)されるでしょう.

下流レイヤーがマスキングをサポートしていないのにそのような入力マスクを受け取ると例外が発生します.

LSTMレイヤーに与えるための(samples, timesteps, features)のshapeを持つのNumpy 配列xを考えてみましょう. あなたが#3と#5のタイムステップに関してデータを欠損しているので,これらのタイムステップをマスクしたい場合,あなたは以下のようにできます:

  • x[:, 3, :] = 0.x[:, 5, :] = 0.をセットする.
  • LSTMレイヤーの前にmask_value=0.Maskingレイヤーを追加する:
model = Sequential()
model.add(Masking(mask_value=0., input_shape=(timesteps, features)))
model.add(LSTM(32))