基本思想是,我加载训练有素的模型(DCGAN)并在图像上对其进行异常检测。对于异常检测,我必须在测试阶段进行一些迭代来评估它,如果它是异常的话。
为此,我在测试设置中有两个Loss-Function,它应该计算生成器输入的反向传播,更新潜在的矢量。 但它只应更新潜在的向量,而不是图表上的权重。
这可能吗?
可能,如果我只使用潜在向量的pytorch变量并将生成器的变量输出设置为
"requires_grad=False"
就像在文档中一样 - > Pytorch
答案 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)