第一个项目是用pytorch,我被困在试图将MNIST标签'int‘转换成火炬’变量‘的过程中。调试器说它没有维度?!
# 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个元素
发布于 2017-06-19 17:58:28
错误是告诉你到底发生了什么。您的target变量为空。
编辑(以下注释后):
如果是Y_train[k] = 5,那么np.array(Y_train[k], dtype=np.float).shape = (),然后Variable(b)变成一个没有维数的张量。
为了解决这个问题,您需要将一个列表传递给np.array(),而不是整数或浮点数。
如下所示:
b = torch.from_numpy(np.array([Y_train[k]], dtype=np.float)).float()https://stackoverflow.com/questions/44631628
复制相似问题