Param# Spalte von model.summary() bei Conv2D layer den Wert 0
Verfasst: Freitag 17. Juni 2022, 16:53
ich habe folgenden Custom layer erstellt (siehe Codeblock 1) und anschließend im im Codeblock 2 verwendet. Das Problem ist, dass bei der Param# Spalte der .summary() methode die Anzahl der Parameter bei meinem Custom Layer wohl 0 ist. Ich finde meinen Fehler jedoch leider nicht,
Codeblock 1: (Mein Custom Layer wird erstellt)
Codeblock 2: (Model mit meinem Custom Layer wird erstellt)
Codeblock 1: (Mein Custom Layer wird erstellt)
Code: Alles auswählen
class ResidualUnit(keras.layers.Layer):
def __init__(self, filters, strides=1, activation = "relu", **kwargs):
super().__init__(**kwargs)
self.activation = keras.activations.get(activation)
self.main_layers= [
Conv2D(filters = filters, kernel_size = 3,
strides = strides, padding = "SAME",
use_bias = False),
BatchNormalization(),
self.activation,
Conv2D(filters = filters, kernel_size = 3,
strides = strides, padding = "SAME",
use_bias = False),
BatchNormalization()
]
self.skip_layers = [] # ist leere liste
if strides > 1: # wenn strides > 1, dann self.skip_layers nicht leere liste
self.skip_layers = [
Conv2D(filters = filters, kernel_size = 1,
strides = strides, padding = "SAME",
use_bias = False),
BatchNormalization()
]
def call(self, inputs):
Z = inputs
for layer in self.main_layers:
Z = layer(Z)
skip_Z = inputs
for layer in self.skip_layers:
skip_Z = layer(skip_Z)
return self.activation(Z + skip_Z)
Code: Alles auswählen
resnet_model = Sequential([
Conv2D(filters= 64, kernel_size = 7, strides=2,
padding = "SAME", input_shape = [224, 224, 3]),
BatchNormalization(),
Activation("relu"),
MaxPool2D(pool_size = 3, strides = 2, padding = "SAME")
])
previous_filters = 64
for filters in [64]*3 + [128]*4 + [256]*6 + [512]*3 :
strides = 1 if filters == previous_filters else 2
resnet_model.add(ResidualUnit(filters, strides = strides)) # HIER: wird Custom Layer verwendet
previous_filters = filters
resnet_model.add(GlobalAvgPool2D())
resnet_model.add(Flatten())
resnet_model.add(Dense(10, activation = "softmax"))
print(resnet_model.summary())