Deep learning 索引器:index_select():索引应该是一个向量

Deep learning 索引器:index_select():索引应该是一个向量,deep-learning,pytorch,Deep Learning,Pytorch,包含index_select函数的行出现此错误,我无法在任何地方找到解决方案。打印时的目标变量如下所示: for batch_id, (data, target) in enumerate(tqdm(train_loader)): print(target) print('Entered for loop') target = torch.sparse.torch.eye(10).index_select(dim=0, index=targ

包含index_select函数的行出现此错误,我无法在任何地方找到解决方案。打印时的目标变量如下所示:

    for batch_id, (data, target) in enumerate(tqdm(train_loader)):
        print(target)
        print('Entered for loop')
        target = torch.sparse.torch.eye(10).index_select(dim=0, index=target)
        data, target = Variable(data), Variable(target)

如何将目标变量转换为向量?它不是已经是一个向量了吗?

如果你观察目标变量的形状,你会发现它是一个形状的二维张量:

tensor([[4],
[1],
[8],
[5],
[9],
[5],
[5],
[8],
[4],
[6]])
错误消息有点混乱,但本质上索引应该是一维张量(向量)。因此,使用.squence方法将使:

target.shape # torch.Size([10, 1])
而索引选择方法不会抱怨

target.squeeze().shape # torch.Size([10])