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

时间:2017-07-06 10:19:10

标签: python deep-learning pytorch dcgan

基本思想是,我加载训练有素的模型(DCGAN)并在图像上对其进行异常检测。对于异常检测,我必须在测试阶段进行一些迭代来评估它,如果它是异常的话。

为此,我在测试设置中有两个Loss-Function,它应该计算生成器输入的反向传播,更新潜在的矢量它只应更新潜在的向量,而不是图表上的权重。

这可能吗?

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

1 个答案:

答案 0 :(得分:2)

是的,你在那里走上正轨。 您可以单独设置模型参数的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)