【发布时间】:2019-09-22 17:22:30
【问题描述】:
我正在尝试访问 3D-Pytorch-Tensor 中的多个元素,但返回的元素数量是错误的。
这是我的代码:
import torch
a = torch.FloatTensor(4,3,2)
print("a = {}".format(a))
print("a[:][:][0] = {}".format(a[:][:][0]))
这是输出:
a = tensor([[[-4.8569e+36, 3.0760e-41],
[ 2.7953e+20, 1.6928e+22],
[ 3.1692e-40, 7.2945e-15]],
[[ 2.5011e+24, 1.3173e-39],
[ 1.7229e-07, 4.1262e-08],
[ 4.1490e-08, 6.4103e-10]],
[[ 3.1728e-40, 5.8258e-40],
[ 2.8776e+32, 6.7805e-10],
[ 3.1764e-40, 5.4229e+08]],
[[ 7.2424e-37, 1.3697e+07],
[-2.0362e-33, 1.8146e+11],
[ 3.1836e-40, 1.9670e+34]]])
a[:][:][0] = tensor([[-4.8569e+36, 3.0760e-41],
[ 2.7953e+20, 1.6928e+22],
[ 3.1692e-40, 7.2945e-15]])
我希望是这样的:
a[:][:][0] = tensor([[-4.8569e+36, 2.7953e+20, 3.1692e-40,
2.5011e+24, 1.7229e-07, 4.1490e-08,
3.1728e-40, 2.8776e+32, 3.1764e-40,
7.2424e-37, -2.0362e-33, 3.1836e-40]])
谁能向我解释我是如何得出这个结果的? 非常感谢您!
我得到了完全预期的执行结果:
for i in range(4):
for j in range(3):
print("a[{}][{}][0] = {}".format(i,j, a[i][j][0]))
【问题讨论】:
-
谢谢,但这不起作用。无论出于何种原因
a[0][:][:]、a[:][0][:]、a[:][:][0]甚至a[:][:][:][:][0]输出相同?!?!这些东西是如何实现的?!?! -
我已经添加了详细的解释和注释。那应该澄清:)
标签: python-3.x vectorization pytorch tensor tensor-indexing