Sie sind im Wesentlichen gleich. Der Vorteil, es separat zu setzen, ist, dass Sie andere Schichten (zB BatchNormalization
) dazwischen hinzufügen können.
In Keras, wenn nicht anders angegeben, wird Convolution2D
verwenden, um die ‚linear‘ Aktivierung durch Standard, die nur die Identitätsfunktion ist
def linear(x):
'''
The function returns the variable that is passed in, so all types work.
'''
return x
und alles, was Activation
Schicht nicht bewirbt sich die Aktivierungsfunktion an den Eingang
def call(self, x, mask=None):
return self.activation(x)
Edit:
Also im Grunde Convolution2D(activation = 'relu')
gilt relu Aktivierungsfunktion nach der Faltung durchgeführt wird, die gleich ist wie Activation('relu')
nach Convolution2D(32, 3, 3)
die letzten beiden Zeilen der call
Funktion der Convolution2D
Schicht
output = self.activation(output)
return output
Anwendung, wo output
ist die Ausgabe von Faltung. So wissen wir, die Aktivierung der Funktion ist der letzte Schritt von Convolution2D
.
Quellcode:
Convolution2D
Schicht: https://github.com/fchollet/keras/blob/a981a8c42c316831183cac7598266d577a1ea96a/keras/layers/convolutional.py
Activation
Schicht: https://github.com/fchollet/keras/blob/a981a8c42c316831183cac7598266d577a1ea96a/keras/layers/core.py
Aktivierungsfunktionen: https://github.com/fchollet/keras/blob/master/keras/activations.py
Nur um zu klären. Im Grunde wendet Convolution2D (Aktivierung = 'relu') die Reluq-Aktivierungsfunktion an, nachdem Faltung ausgeführt wurde, was der gleichen ist wie die Aktivierung ('relu') nach Convolution2D (32, 3, 3)? – angubenko
@angubenko Ja, ich habe einen Code und eine Erklärung in der Antwort hinzugefügt, hoffe, dass das hilft. – dontloo
das hilft viel, danke! – angubenko