假设您有3个相同大小的张量:
a = torch.randn(3,3)
a = ([[ 0.1945,0.8583,2.6479],[-0.1000,1.2136,-0.3706],[-0.0094,0.4279,-0.6840]])
b = torch.randn(3,3)
b = ([[-1.1155,0.2106,-0.2183],[ 1.6610,-0.6953,0.0052],[-0.8955,0.0953,-0.7737]])
c = torch.randn(3,3)
c = ([[-0.2303,-0.3427,-0.4990],[-1.1254,0.4432,0.3999],[ 0.2489,-0.9459,-0.5576]])
[self] map2(tensor1,tensor2,function(x,xt1,xt2))
将给定的功能应用于自我的所有元素.
我的问题是:
> python(pytorch)中是否有任何类似的功能?
>是否有任何pythonic方法可以遍历3个张量并获取每个张量的各个元素,而无需使用for循环和索引?
例如:
0.1945 -1.1155 -0.2303
0.8583 0.2106 -0.3427
2.6479 -0.2183 -0.4990
-0.1000 1.6610 -1.1254
...
Edit_1:我也尝试过itertools.zip_longest和zip,但是结果与上面提到的不一样
最佳答案
您可以使用Python的map函数,类似于您提到的.像这样:
原文链接:/python/533311.html>>> tensor_list = [torch.tensor([i,i,i]) for i in range(3)]
>>> list(map(lambda x: x**2,tensor_list))
[tensor([0,0]),tensor([1,1,1]),tensor([4,4,4])]
>>>
编辑:对于仅PyTorch的方法,您可以使用torch.Tensor.apply_(请注意,这会进行适当的更改,并且不会返回新的张量)
>>> x = torch.tensor([[1,2,3],[4,5,6],[7,8,9]])
>>> x.apply_(lambda y: y ** 2)
tensor([[ 1,9],[16,25,36],[49,64,81]])
>>>