首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将'int‘转换为py手电筒’变量‘会产生问题

将'int‘转换为py手电筒’变量‘会产生问题
EN

Stack Overflow用户
提问于 2017-06-19 13:14:49
回答 1查看 3.2K关注 0票数 2

第一个项目是用pytorch,我被困在试图将MNIST标签'int‘转换成火炬’变量‘的过程中。调试器说它没有维度?!

代码语言:javascript
运行
复制
# numpy mnist data
X_train, Y_train = read_data("training")
X_test , Y_test  = read_data("testing")

arr = np.zeros(5)
for i in range(5):
    # in your training loop:
    costs_ = 0
    for k in range(10000):
        optimizer.zero_grad()                            # zero the gradient buffers
        a = torch.from_numpy(np.expand_dims(X_train[k].flatten(), axis=0)).float()
        b = torch.from_numpy(np.array(Y_train[k], dtype=np.float)).float()
        input = Variable(a)
        output = net(input)
        target = Variable(b)                             # PROBLEM!!
        loss = criterion(output, target)
        loss.backward()
        optimizer.step()                                 # Does the update

        costs_ += loss.data.numpy()
    arr[i] = costs_ 
    print(i)

抛出的错误是:"RuntimeError:输入和目标有不同数量的元素: input1 x 1有1个元素,而target[]在target[]中有0个元素

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-19 17:58:28

错误是告诉你到底发生了什么。您的target变量为空。

编辑(以下注释后):

如果是Y_train[k] = 5,那么np.array(Y_train[k], dtype=np.float).shape = (),然后Variable(b)变成一个没有维数的张量。

为了解决这个问题,您需要将一个列表传递给np.array(),而不是整数或浮点数。

如下所示:

代码语言:javascript
运行
复制
b = torch.from_numpy(np.array([Y_train[k]], dtype=np.float)).float()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44631628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档