Tensorflow子类化问题



我有一个resnet模型,由以下类定义:

class ModelResNet(tf.keras.models.Model):
def __init__(self):
super(ModelResNet, self).__init__()
self.resBlock1 = ResBlock(num_filters=32)
self.resBlock2 = ResBlock(num_filters=32)
self.dense1 = tf.keras.layers.Dense(units=128, activation='relu')
self.dense2 = tf.keras.layers.Dense(units=10, activation='softmax')
def call(self, input_tensor, training=False):
x = self.resBlock1(input_tensor, training=training)
x = self.resBlock2(x, training=training)
x = tf.keras.layers.Flatten()(x)
# Option 1
x = self.dense1(x)
x = self.dense2(x)
# Option 2
# x = tf.keras.layers.Dense(units=128, activation='relu')(x)
# x = tf.keras.layers.Dense(units=10, activation='softmax')(x)
return x

当我调用ModelResNet2.fit((时,一切都很好!但是,如果我在";呼叫";方法,我得到以下错误:

ValueError:tf.function-decorated函数试图在非第一次调用时创建变量。python BaseException

我不知道这个问题是从哪里来的。谢谢

调用时:

x = tf.keras.layers.Dense(units=128, activation='relu')(x)

您正在创建一个密集层,该层将立即被销毁(在退出call((方法之后(。这没有道理——你将无法训练。

Tensorflow无法通过这样的调用创建层的图形。所以它禁止他们。

最新更新