0
点赞
收藏
分享

微信扫一扫

5、使用PyTorch 实现线性回归


视频:​​《PyTorch深度学习实践》完结合集_哔哩哔哩_bilibili​​

 

使用PyTorch 实现线性回归(4步):

1、构建数据集

2、设计模型(使用类)

3、构造损失函数(loss)和优化器(optimizer)

4、训练周期(前馈、反馈、更新)

5、使用PyTorch 实现线性回归_深度学习

 

1、准备数据

#1.准备数据,注意都是矩阵形式
x_data = torch.Tensor([[1.0], [2.0], [3.0]])
y_data = torch.Tensor([[2.0], [4.0], [6.0]])

 

2、设计模型

5、使用PyTorch 实现线性回归_数据_02

(使用torcn.nn下的Linear模型)

2.设计模型(类) 继承nn.Module 以便使用其方法
class LinearModel(torch.nn.Module):

#初始化
def __init__(self):
super(LinearModel,self).__init__()
self.linear = torch.nn.Linear(1,1) #Linear是一个线性单元

#前馈方法
def forward(self, x):
y_pred = self.linear(x) #实际上调用对象linear的__call__()方法,linear的__call__()方法执行forward前馈
return y_pred

model = LinearModel()

 

 

 

3、损失和优化器

#3 loss 和 optimizer(优化器)
criterion = torch.nn.MSELoss(size_average=False) #不需要求均值
# 优化器。 model.parameters()获取模型中需要优化的参数,lr(learning rate,学习率)
optimizer = torch.optim.SGD(model.parameters(),lr=0.01)

 

4、训练

#4 训练过程
for epoch in range(100):
#前馈
y_pred = model(x_data)
#计算损失
loss = criterion(y_pred,y_data)
print("epoch={},loss={}".format(epoch,loss))

optimizer.zero_grad()#归零
#反向传播
loss.backward()
#更新、优化参数
optimizer.step()

 

 

 

完整代码:

import torch

#1.准备数据,注意都是矩阵形式
x_data = torch.Tensor([[1.0], [2.0], [3.0]])
y_data = torch.Tensor([[2.0], [4.0], [6.0]])

#2.设计模型(类) 继承nn.Module 以便使用其方法
class LinearModel(torch.nn.Module):

#初始化
def __init__(self):
super(LinearModel,self).__init__()
self.linear = torch.nn.Linear(1,1) #Linear是一个线性单元

#前馈方法
def forward(self, x):
y_pred = self.linear(x) #实际上调用对象linear的__call__()方法,linear的__call__()方法执行forward前馈
return y_pred

model = LinearModel()

#3 loss 和 optimizer(优化器)
criterion = torch.nn.MSELoss(size_average=False) #不需要求均值
# 优化器。 model.parameters()获取模型中需要优化的参数,lr(learning rate,学习率)
optimizer = torch.optim.SGD(model.parameters(),lr=0.01)



#4 训练过程
for epoch in range(100):
#前馈
y_pred = model(x_data)
#计算损失
loss = criterion(y_pred,y_data)
print("epoch={},loss={}".format(epoch,loss))

optimizer.zero_grad()#归零
#反向传播
loss.backward()
#更新、优化参数
optimizer.step()


#Test, 查看模型参数及测试训练效果
print('w={}'.format(model.linear.weight.item()))
print('b={}'.format(model.linear.bias.item()))
x_test = torch.Tensor([[4.0]])
y_test = model(x_test)
print('y_pred = {} for x = {}'.format(y_test.data,x_test.data))

 

举报

相关推荐

0 条评论