Manchmal wird es verstopft, also in einem Memorandum
class ResNet50(Model):
def __init__(self, stride: int = 1, *args, **kwargs):
super(ResNet50, self).__init__(*args, **kwargs)
self.stride = stride
self.avgpool = AveragePooling2D()
self.maxpool = MaxPool2D(padding='same')
self.ResBlocks: List[Layers] = []
self.softmax = Softmax()
self.dense = Dense(1, activation='sigmoid')
def call(self, inputs):
conv_1 = self.conv(inputs)
maxpooled = self.maxpool(conv_1)
layers_num = [3, 4, 6, 3]
for i in range(len(layers_num)):
for _ in range(layers_num[i]):
if i==0 and u==0:
self.ResBlocks.append(Residual_Block(filters_num=4 * 2 ** (i))(maxpooled))
else:
self.ResBlocks.append(Residual_Block(filters_num=4 * 2 ** (i))(self.ResBlocks[-1])))
avgpooled = self.avgpool(maxpooled)
value = self.dense(avgpooled)
return avgpooled, value
Ich habe so etwas gemacht und eine mit tf.function dekorierte Funktion erhalten, die versucht, Variablen beim nicht ersten Aufruf zu erstellen. Wenn Sie nachschlagen, wird die Tensorflow-Deklarationsvariable neu deklariert.
class ResNet50(Model):
def __init__(self, stride: int = 1, *args, **kwargs):
super(ResNet50, self).__init__(*args, **kwargs)
self.stride = stride
self.avgpool = AveragePooling2D()
self.maxpool = MaxPool2D(padding='same')
self.ResBlocks: List[Layers] = []
layers_num = [3, 4, 6, 3]
for i in range(len(layers_num)):
for _ in range(layers_num[i]):
self.ResBlocks.append(Residual_Block(filters_num=4 * 2 ** (i)))
self.conv = Conv2D(filters=16, kernel_size=7, strides=self.stride, padding='same')
self.softmax = Softmax()
self.dense = Dense(1, activation='sigmoid')
def call(self, inputs):
conv_1 = self.conv(inputs)
maxpooled = self.maxpool(conv_1)
for layer in self.ResBlocks:
maxpooled = layer(maxpooled)
avgpooled = self.avgpool(maxpooled)
value = self.dense(avgpooled)
return avgpooled, value
Dann wurde es behoben. Die Ursache war, dass beim Deklarieren einer Ebene in der Modellspezifikation von tensorflow.keras diese Teil der Init sein musste. Ich habe ganz vergessen. Ist die Deklaration von Variablen überall verwandt? Ich würde es gerne herausfinden, auch wenn ich das nächste Mal Zeit habe.