model.trainable_variables return none
model.trainable_variables return none
我想编写我的自定义训练函数,但我无法访问我的 trainable_weights,因为它 returns[]。我可以使用 layer.get_weight() 获取权重,但我的 trainable_variables 是空的。这是我的训练方法:
def train_on_batch(X, y_real,model):
with tf.GradientTape() as tape:
tape.watch(X)
y_pred = model(X, training= True)
print(model.trainable_variables)
loss_value = loss(y_real, y_pred)
grads = tape. gradient(loss_value, model.trainable_variables)
optimizer.apply_gradients(zip(grads, model.trainable_variables))
return loss_value
这是我的 CNN 模型的一部分:
model_list = list()
# base model input
in_image = Input(shape=input_shape)
# conv 1x1
d = Conv2D(128, (1,1), padding='same', kernel_initializer=init, kernel_constraint= const)(in_image)
d = LeakyReLU(alpha=0.2)(d)
# conv 3x3 (output block)
d = MinibatchStdev()(d)
d = Conv2D(128, (3,3), padding='same', kernel_initializer=init, kernel_constraint= const)(d)
d = LeakyReLU(alpha=0.2)(d)
# conv 4x4
d = Conv2D(128, (4,4), padding='same', kernel_initializer=init, kernel_constraint= const)(d)
d = LeakyReLU(alpha=0.2)(d)
# dense output layer
d = Flatten()(d)
out_class = Dense(1, name='dense')(d)
print(type(out_class))
# define model
model = Model(in_image, out_class)
在此处输入代码
检查问题的最后一段代码。这段代码给出了获取变量的最佳方式。
我想编写我的自定义训练函数,但我无法访问我的 trainable_weights,因为它 returns[]。我可以使用 layer.get_weight() 获取权重,但我的 trainable_variables 是空的。这是我的训练方法:
def train_on_batch(X, y_real,model):
with tf.GradientTape() as tape:
tape.watch(X)
y_pred = model(X, training= True)
print(model.trainable_variables)
loss_value = loss(y_real, y_pred)
grads = tape. gradient(loss_value, model.trainable_variables)
optimizer.apply_gradients(zip(grads, model.trainable_variables))
return loss_value
这是我的 CNN 模型的一部分:
model_list = list()
# base model input
in_image = Input(shape=input_shape)
# conv 1x1
d = Conv2D(128, (1,1), padding='same', kernel_initializer=init, kernel_constraint= const)(in_image)
d = LeakyReLU(alpha=0.2)(d)
# conv 3x3 (output block)
d = MinibatchStdev()(d)
d = Conv2D(128, (3,3), padding='same', kernel_initializer=init, kernel_constraint= const)(d)
d = LeakyReLU(alpha=0.2)(d)
# conv 4x4
d = Conv2D(128, (4,4), padding='same', kernel_initializer=init, kernel_constraint= const)(d)
d = LeakyReLU(alpha=0.2)(d)
# dense output layer
d = Flatten()(d)
out_class = Dense(1, name='dense')(d)
print(type(out_class))
# define model
model = Model(in_image, out_class)
在此处输入代码
检查问题的最后一段代码。这段代码给出了获取变量的最佳方式。