Il a tendance à se boucher parfois, donc dans un mémorandum
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
J'ai fait quelque chose comme ça et j'ai eu une fonction décorée de tf.function qui a essayé de créer des variables sur le non-premier appel. Si vous le recherchez, la variable de déclaration tensorflow sera nouvellement déclarée.
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
Ensuite, il a été corrigé. La cause était que lors de la déclaration d'une couche dans la spécification de modèle de tensorflow.keras, elle devait faire partie de l'init. J'ai complètement oublié. La déclaration des variables est-elle reliée partout? J'aimerais savoir même quand j'ai du temps la prochaine fois.
Recommended Posts