[PYTHON] Der Fehler der mit tf.function dekorierten Funktion hat versucht, Variablen beim nicht ersten Aufruf zu erstellen. In tensorflow.keras

Manchmal wird es verstopft, also in einem Memorandum

Fehlerteil

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.

Nach der Auflösung

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.

Recommended Posts

Der Fehler der mit tf.function dekorierten Funktion hat versucht, Variablen beim nicht ersten Aufruf zu erstellen. In tensorflow.keras
[TensorFlow] Resolve "ValueError: Die mit tf.function dekorierte Funktion hat versucht, Variablen beim nicht ersten Aufruf zu erstellen."
Ich habe versucht, eine Umgebung von MkDocs unter Amazon Linux zu erstellen
Erstellen Sie eine Funktion, um den Inhalt der Datenbank in Go abzurufen
Ich habe versucht, Zabbix Server über einen Ausführungsfehler der AWS Lambda-Funktion zu informieren
So schreiben Sie in Error Repoting in Python auf GAE
Eine Geschichte von Versuch und Irrtum beim Versuch, eine dynamische Benutzergruppe in Slack zu erstellen
Schwerwiegender Fehler im Launcher: Prozess kann nicht mit '"' erstellt werden
Ich habe versucht, API list.csv mit Python aus swagger.yaml zu erstellen
Ich habe versucht, die Mail-Sendefunktion in Python zu implementieren
Erstellen wir eine Funktion, um die Schaltfläche in Tkinter gedrückt zu halten
Ich habe versucht, das lokale Minimum der Goldstein-Preis-Funktion zu bekämpfen
Ich habe versucht, das Blackjack of Trump-Spiel mit Python zu implementieren
Ich habe versucht, einen Artikel mit SQL Alchemy auf Wiki.js zu erstellen
Ich habe einen Fehler bekommen, als ich versucht habe, Luigi parallel in Windows zu verarbeiten, aber die Lösung
Ich habe versucht, die Exponentialfunktion und die Logistikfunktion an die Anzahl der COVID-19-positiven Patienten in Tokio anzupassen