线性回归demo-数据与参数配置

框架最牛的一件事就是把反向传播做好了

下面以线性回归为例,做一个最简单的demo

步骤

  • (1) 准备数据
  • (2) 构造模型
  • (3) 制定好参数和损失函数
  • (4) 训练模型
  • (5) 测试模型
  • (6) 保存模型
import torch
import numpy as np
import torch.nn as nn

#构造一组输入数据X和其对应的标签Y
x_values=[i for i in range(11)]
x_train=np.array(x_values,dtype=np.float32)
x_train=x_train.reshape(-1,1)
x_train.shape

y_values=[2*i+1 for i in range(11)]
y_train=np.array(y_values,dtype=np.float32)
y_train=y_train.reshape(-1,1)
y_train.shape

#线性回归就是一个不加激活函数的全连接层
class LinearRegressionModel(nn.Module):
    def __init__(self,input_dim,output_dim):
        super(LinearRegressionModel,self).__init__()
        self.linear=nn.Linear(input_dim,output_dim)
    def forward(self,x):
        out=self.linear(x)
        return out

input_dim=1
output_dim=1

#使用GPU进行训练
#只需要把数据和模型传入cuda里面就行了
#device=torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
#model.to(device)
#使用CPU训练
model=LinearRegressionModel(input_dim,output_dim)
model

#指定好参数和损失函数
epochs=1000
learning_rate=0.01
optimizer=torch.optim.SGD(model.parameters(),lr=learning_rate)
criterion=nn.MSELoss()

#训练模型
for epoch in range(epochs):
    epoch+=1
    #注意行转化成tensor,使用CPU
    inputs=torch.from_numpy(x_train)
    labels=torch.from_numpy(y_train)
    #使用GPU
   #inputs=torch.from_numpy(x_train).to(device)
   #lables=torch.from_numpy(y_train).to(device)
    #梯度要清零每一次迭代
    optimizer.zero_grad()
    #前向传播
    outputs=model(inputs)
    #计算损失函数
    loss=criterion(outputs,labels)
    #返向传播
    loss.backward()
    #更新权重参数
    optimizer.step()
    if epoch%50==0:
        print('epoch{},loss{}'.format(epoch,loss.item()))

#测试模型预测结果
predicted=model(torch.from_numpy(x_train).requires_grad_()).data.numpy()
predicted

#模型的保存与读取
torch.save(model.state_dict(),'model.pkl') #model.
model.load_state_dict(torch.load('model.pkl'))

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值