Python 不更新权重的反向传播(DCGAN)

Python 不更新权重的反向传播(DCGAN),python,deep-learning,pytorch,dcgan,Python,Deep Learning,Pytorch,Dcgan,基本思想是,我加载一个经过训练的模型(DCGAN),并用它在图像上进行异常检测。对于异常检测,我必须在测试阶段进行一些迭代,以评估它是否是异常 为此,我在测试设置中有两个损失函数,它们应该计算到生成器输入的反向传播,并更新潜在向量但它只应更新潜在向量,而不应更新图上的权重 这可能吗 可能,如果我只使用潜在向量的pytorch变量,并将生成器的变量输出设置为 “需要\u grad=False” 就像在文档中一样-->是的,你在正确的轨道上。 您可以单独设置模型参数的requires_grad属性(

基本思想是,我加载一个经过训练的模型(DCGAN),并用它在图像上进行异常检测。对于异常检测,我必须在测试阶段进行一些迭代,以评估它是否是异常

为此,我在测试设置中有两个损失函数,它们应该计算到生成器输入的反向传播,并更新潜在向量它只应更新潜在向量,而不应更新图上的权重

这可能吗

可能,如果我只使用潜在向量的pytorch变量,并将生成器的变量输出设置为
“需要\u grad=False”

就像在文档中一样-->

是的,你在正确的轨道上。 您可以单独设置模型参数的
requires_grad
属性(更精确地说是计算图中所有叶节点的属性)。我不熟悉DCGAN,但我假设潜在向量也是一个可训练的参数(否则反向传播更新对我来说没什么意义)

以下改编自PyTorch文档的代码片段可能对您有用:

# Load your model
model = torchvision.models.resnet18(pretrained=True)

# Disable gradient computation for all parameters
for param in model.parameters():
    param.requires_grad = False

# Enable gradient computation for a specific layer (here the last fc layer)
for param in model.fc.parameters():
    param.requires_grad = True

# Optimize only the the desired parameters (for you latent vectors)
optimizer = optim.SGD(model.fc.parameters(), lr=1e-2, momentum=0.9)