创建了数据集x和y,通过自定义模型,创建忧化函数,损失函数,通过大量训练能过得出预测的y值,当x=4时>>>7.9998 和真实的y=8 十分接近。


import torch
from torch import nn
from matplotlib import pyplot as plt
import torch.optim as optim


#创建数据集
x=torch.tensor([[1.0],[2.0],[3.0]])
y=torch.tensor([[2.0],[4.0],[6.0]])


#自定义线性回归模型
#让LinearRegression继承Moudule的内容,Moudule是创建线性回归方程的一个类。
class LinearRegression(nn.Module):
    def __init__(self):
        super(LinearRegression,self).__init__()
        self.fc=nn.Linear(1,1)  #(1,1)表示定义一个一元一次线性回归方程
    def forward(self,x):
        y_pred=self.fc(x)
        return y_pred
#创建完回归方程类后,再把它创建出来。
model=LinearRegression()
#创建损失函数和优化函数
criterion=nn.MSELoss(reduction='sum')  #创建损失函数
optimizer=optim.SGD(model.parameters(),lr=0.01)#创建优化函数


#模型训练
e_list=[]
l_list=[]
w_list=[]
b_list=[]
for i in range(1000):
    y_pred=model(x)
    loss=criterion(y_pred,y)
    e_list.append(i)
    l_list.append(loss)
    w_list.append(model.fc.weight.item())  #返回系数的数值
    b_list.append(model.fc.bias.item())
    optimizer.zero_grad() #梯度归零
    loss.backward()    #回车一下,把loss的值返回一下,应该相当于return
    optimizer.step()   #更新

#测试模型
x_test=torch.tensor([[4.0]])
y_test=model(x_test)
print(y_test)





image

原文地址:http://www.cnblogs.com/JK8395/p/16881178.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性