2016-05-09 5 views

答えて

5

彼らは基本的に同じです。別々に置くことの利点は、間に他のレイヤー(たとえばBatchNormalization)を追加できることです。 Kerasで

は、指定されていない場合は、Convolution2D

def linear(x): 
    ''' 
    The function returns the variable that is passed in, so all types work. 
    ''' 
    return x 

だけ恒等関数であり、すべてのことActivation層は入力に活性化関数を適用しているんれ、デフォルトでは「線形」の活性化を使用します

def call(self, x, mask=None): 
    return self.activation(x) 

編集:

だから、基本的にはConvolution2D(activation = 'relu')Convolution2D層のcall関数の最後の2行は、outputでの出力である

output = self.activation(output) 
return output 

であるConvolution2D(32, 3, 3)

Activation('relu')を適用することと同じである、畳み込みを行った後relu活性化関数を適用します畳み込み。したがって、活性化機能を適用することがわかっているのは、Convolution2Dの最後のステップです。

ソースコード:
Convolution2D層:https://github.com/fchollet/keras/blob/a981a8c42c316831183cac7598266d577a1ea96a/keras/layers/convolutional.py
Activation層:https://github.com/fchollet/keras/blob/a981a8c42c316831183cac7598266d577a1ea96a/keras/layers/core.py
活性化関数:https://github.com/fchollet/keras/blob/master/keras/activations.py

+0

だけで明確にします。だからConvolution2D(activation = 'relu')は、Convolution2D(32,3,3)の後にActivation( 'relu')を適用するのと同じコンボルーションを実行した後、relu activation関数を適用しますか? – angubenko

+0

@angubenkoはい、答えにいくつかのコードと説明を追加しました。 – dontloo

+0

多くのことに助けてくれてありがとう! – angubenko

関連する問題