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

Backpropagation without updating weights (DCGAN)

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

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

这可能吗?

可能,如果我只使用我的潜在向量的 pytorch 变量并将生成器的变量输出设置为 "requires_grad=False" 就像在文档中一样 --> Pytorch

是的,您的方向是正确的。 您可以单独设置模型参数的 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)