如何迭代 pytorch 2d 张量?

Avi*_*ppo 4 python numpy pytorch tensor

X = np.array([
    [-2,4,-1],
    [4,1,-1],
    [1, 6, -1],
    [2, 4, -1],
    [6, 2, -1],
    ])

for epoch in range(1,epochs):
    for i, x in enumerate(X):

X = torch.tensor([
    [-2,4,-1],
    [4,1,-1],
    [1, 6, -1],
    [2, 4, -1],
    [6, 2, -1],
    ])
Run Code Online (Sandbox Code Playgroud)

当它是一个 numpy 数组时,循环很好。但我想使用 pytorch 张量,那么枚举的替代方法是什么或者我如何在第二行中循环上述张量?

yat*_*atu 11

enumerate需要一个可迭代的,所以它也适用于 pytorch 张量:

X = torch.tensor([
    [-2,4,-1],
    [4,1,-1],
    [1, 6, -1],
    [2, 4, -1],
    [6, 2, -1],
    ])

for i, x in enumerate(X):
    print(x)
    tensor([-2,  4, -1])
    tensor([ 4,  1, -1])
    tensor([ 1,  6, -1])
    tensor([ 2,  4, -1])
    tensor([ 6,  2, -1])
Run Code Online (Sandbox Code Playgroud)

如果你想迭代底层数组:

for i, x in enumerate(X.numpy()):
    print(x)
    [-2  4 -1]
    [ 4  1 -1]
    [ 1  6 -1]
    [ 2  4 -1]
    [ 6  2 -1]
Run Code Online (Sandbox Code Playgroud)

但请注意,pytorch 的底层数据结构是 numpy 数组,因此您可能希望避免在张量上循环,并且应该考虑通过 pytorch 或 numpy 对任何操作进行矢量化。