【发布时间】:2018-05-20 07:08:24
【问题描述】:
我正在学习如何使用 pytorch,并且能够掌握 ML 模型的构建和执行的整个过程。但是,我无法掌握的是如何在执行模型之前“格式化”或“重塑”数据。我不断收到以下错误:
RuntimeError:大小不匹配,m1:[1 x 700],m2:[1 x 1] 在 c:\programdata\miniconda3\conda-bld\pytorch_1524543037166\work\aten\src\th\generic/THTensorMath.c :2033
或者,
预期变量类型为变量 [torch.DoubleTensor] 的对象,但为参数 #1 ‘mat2’找到变量类型 [torch.FloatTensor]
所以,我有一个名为“train.csv”的 csv 文件,其中包含名为“x”和“y”的属性,其中有 700 个样本,我想对数据执行简单的线性回归,然后解析数据从它使用熊猫,我如何格式化或重塑数据,使其能够顺利执行? pytorch 是如何遍历输入数据的?
我最近执行的代码是:
import torch
import torch.nn as nn
from torch.autograd import Variable
import pandas as pd
class Linear_Reg(nn.Module):
def __init__(self, inp_sz, out_sz):
super(Linear_Reg, self).__init__()
self.linear = nn.Linear(inp_sz, out_sz)
def forward(self, x):
out = self.linear(x)
return out
train = pd.read_csv('C:\\Users\\hgstr\\Jupyter_Files\\Data_Sets\\linear_regression\\train.csv')
test = pd.read_csv('C:\\Users\\hgstr\\Jupyter_Files\\Data_Sets\\linear_regression\\test.csv')
x_train = torch.Tensor(train['x'])
y_train = torch.Tensor(train['y'])
x_test = torch.Tensor(test['x'])
y_test = torch.Tensor(test['y'])
x_train = torch.Tensor(x_train)
x_train = x_train.view(1,-1)
#================================
input_sz = 1;
output_sz = 1
epochs = 60
learning_rate = 0.001
#================================
model = Linear_Reg(input_sz, output_sz)
crit = nn.MSELoss()
opt = torch.optim.SGD(model.parameters(), learning_rate)
for e in range(epochs):
opt.zero_grad()
out = model(x_train)
loss = crit(out, y_train)
loss.backward()
opt.step()
print('epoch {}, loss {}'.format(e,loss.data[0]))
它给出了以下内容:
RuntimeError:大小不匹配,m1:[1 x 700],m2:[1 x 1] 在 c:\programdata\miniconda3\conda-bld\pytorch_1524543037166\work\aten\src\th\generic/THTensorMath.c :2033
解决方案?
【问题讨论】:
标签: python machine-learning linear-regression pytorch