Python 我如何在PyTorch中使用梯度下降来改变输入?

Python 我如何在PyTorch中使用梯度下降来改变输入?,python,pytorch,Python,Pytorch,我是皮托克的新手。我了解到它使用autograd自动计算梯度下降函数的梯度 我不想调整权重,而是想使用梯度下降法对输入进行变异,以获得所需的输出。所以,我不想改变神经元的权值,我想保持所有的权值不变,只需改变输入以最小化损失 比如说。该网络是一个经过训练的数字为0-9的图像分类器。我输入随机噪声,我想对它进行变形,使网络认为它是具有60%置信度的3。我想利用梯度下降来调整输入值(最初为噪声),直到网络认为输入为3,置信度为60% 有办法做到这一点吗?我想你知道如何通过梯度下降进行常规训练。您只需

我是皮托克的新手。我了解到它使用
autograd
自动计算梯度下降函数的梯度

我不想调整权重,而是想使用梯度下降法对输入进行变异,以获得所需的输出。所以,我不想改变神经元的权值,我想保持所有的权值不变,只需改变输入以最小化损失

比如说。该网络是一个经过训练的数字为0-9的图像分类器。我输入随机噪声,我想对它进行变形,使网络认为它是具有60%置信度的
3
。我想利用梯度下降来调整输入值(最初为噪声),直到网络认为输入为
3
,置信度为60%


有办法做到这一点吗?

我想你知道如何通过梯度下降进行常规训练。您只需要更改要由优化器优化的参数。差不多

#。。。设置网络,加载输入
# ...
#设置正确需要_grad->我们训练输入,而不是参数
input.requires\u grad=True
对于网络中的p。参数()
p、 需要_grad=False
#设置优化器
#以前我们应该有一些优化器(net.parameters())
optim=SomeOptimizer([input])
输出您想要的结果=。。。
实际输出=净(输入)
some\u loss=SomeLossFunction(您想要的输出,实际输出)
# ...
#像往常一样使用Back prop和optim.step()

我想你知道如何利用梯度下降进行常规训练。您只需要更改要由优化器优化的参数。差不多

#。。。设置网络,加载输入
# ...
#设置正确需要_grad->我们训练输入,而不是参数
input.requires\u grad=True
对于网络中的p。参数()
p、 需要_grad=False
#设置优化器
#以前我们应该有一些优化器(net.parameters())
optim=SomeOptimizer([input])
输出您想要的结果=。。。
实际输出=净(输入)
some\u loss=SomeLossFunction(您想要的输出,实际输出)
# ...
#像往常一样使用Back prop和optim.step()

只有一个网络不可能做到这一点。你需要像GAN(生成性对抗网络)这样的东西,它是两个网络的组合,来实现这一点。是的,你可以。看看这个,仅仅一个网络是不可能做到的。你需要像GAN(生成性对抗网络)这样的东西,它是两个网络的组合,来实现这一点。是的,你可以。看看这个。