小编Ten*_*rye的帖子

Pytorch:如何获取图中的所有张量

我想访问图形的所有张量实例。例如,我可以检查张量是否分离或者我可以检查大小。它可以在tensorflow 中完成。

想要图形的可视化。

python deep-learning pytorch

9
推荐指数
1
解决办法
1040
查看次数

Pytorch - 推断所有图像并逐批反向传播

我有一个特殊的用例,我必须将推理和反向传播分开:我必须将所有图像和切片输出推断为批次,然后逐批反向传播。我并不需要更新网络的权重。

我将cifar10_tutorial 的片段修改为以下内容来模拟我的问题:j是一个变量,用于表示由我自己的逻辑返回的索引,我想要一些变量的梯度。

for epoch in range(2):  # loop over the dataset multiple times

    for i, data in enumerate(trainloader, 0):
        # get the inputs
        inputs, labels = data
        inputs.requires_grad = True

        # zero the parameter gradients
        optimizer.zero_grad()

        # forward + backward + optimize
        outputs = net(inputs)

        for j in range(4): # j is given by external logic in my own case

            loss = criterion(outputs[j, :].unsqueeze(0), labels[j].unsqueeze(0))

            loss.backward()

            print(inputs.grad.data[j, …
Run Code Online (Sandbox Code Playgroud)

python deep-learning pytorch

6
推荐指数
1
解决办法
850
查看次数

Python - 猴子补丁失败,为什么?

我想f(*args, **kwargs)从已安装的模块中进行猴子修补。我在自己的代码中使用了装饰器的想法,但是已安装模块中的其他方法无法f正确调用。

这是一个例子:

import numpy as np

def log(func):
    def wrapper(*args, **kwargs):
        print('logging')
        return func(*args, **kwargs)
    return wrapper

if __name__ == "__main__":
    a1 = np.asarray([0, 1, 2])
    print(f'a1={a1}')

    a2 = np.array([0, 1, 2])
    print(f'a2={a2}')

    np.array = log(np.array)

    a3 = np.asarray([0, 1, 2])
    print(f'a3={a3}')

    a4 = np.array([0, 1, 2])
    print(f'a4={a4}')
Run Code Online (Sandbox Code Playgroud)

输出是:

a1=[0 1 2]
a2=[0 1 2]
a3=[0 1 2]
logging
a4=[0 1 2]
Run Code Online (Sandbox Code Playgroud)

我希望结果是:

a1=[0 1 2]
a2=[0 1 2]
logging
a3=[0 1 2]
logging
a4=[0 …
Run Code Online (Sandbox Code Playgroud)

monkeypatching metaprogramming python-import python-3.x python-internals

5
推荐指数
1
解决办法
1146
查看次数

Pytorch autograd.grad 如何写多个输出的参数?

在 的文档torch.autograd.grad,它指出,对于参数,

参数:

输出(张量序列)——微分函数的输出。

输入(张量序列)– 将返回梯度的输入(而不是累积到 .grad 中)。

我尝试以下操作:

a = torch.rand(2, requires_grad=True)
b = torch.rand(2, requires_grad=True)
c = a+b
d = a-b

torch.autograd.grad([c, d], [a, b]) #ValueError: only one element tensors can be converted to Python scalars
torch.autograd.grad(torch.tensor([c, d]), torch.tensor([a, b])) #RuntimeError: grad can be implicitly created only for scalar outputs
Run Code Online (Sandbox Code Playgroud)

我想得到一个张量列表的梯度和另一个张量列表。输入参数的正确方法是什么?

python-3.x deep-learning pytorch

5
推荐指数
1
解决办法
2767
查看次数