当前位置: 首页 > news >正文

广州网站建设公司乐云seo598人大常委会委员长

广州网站建设公司乐云seo598,人大常委会委员长,开发者,惠东网络建站公司000动手从0实现线性回归 0. 背景介绍 我们构造一个简单的人工训练数据集,它可以使我们能够直观比较学到的参数和真实的模型参数的区别。 设训练数据集样本数为1000,输入个数(特征数)为2。给定随机生成的批量样本特征 X∈R10002 …

000动手从0实现线性回归

0. 背景介绍

我们构造一个简单的人工训练数据集,它可以使我们能够直观比较学到的参数和真实的模型参数的区别。
设训练数据集样本数为1000,输入个数(特征数)为2。给定随机生成的批量样本特征 X∈R1000×2
X∈R 1000×2 ,我们使用线性回归模型真实权重 w=[2,−3.4]⊤ 和偏差 b=4.2以及一个随机噪声项 ϵϵ 来生成标签
在这里插入图片描述

# 需要导入的包
import numpy as np
import torch
import random
from d2l import torch as d2l
from IPython import display
from matplotlib import pyplot as plt

1. 生成数据集合(待拟合)

使用python生成待拟合的数据

num_input = 2
num_example = 1000
w_true = [2,-3.4]
b_true = 4.2
features = torch.randn(num_example,num_input)
print('features.shape = '+ str(features.shape) )
labels =  w_true[0] * features[:,0] + w_true[1] * features[:,1] + b_true
labels += torch.tensor(np.random.normal(0,0.01 , size = labels.size() ),dtype = torch.float32)
print(features[0],labels[0])

2.数据的分批量处理

def data_iter(batch_size, features, labels):num_example = len(labels)indices = list(range(num_example))random.shuffle(indices)for i in range(0, num_example, batch_size):j = torch.tensor( indices[i:min(i+ batch_size,num_example)])yield features.index_select(0,j) ,labels.index_select(0,j)

3. 模型构建及训练

3.1 定义模型:

def linreg(X, w, b):return torch.mm(X,w)+b

3.2 定义损失函数

def square_loss(y, y_hat):return (y_hat - y.view(y_hat.size()))**2/2

3.3 定义优化算法

def sgd(params , lr ,batch_size):for param in params:param.data  -= lr * param.grad / batch_size

3.4 模型训练

# 设置超参数
lr = 0.03
num_epochs =5
net = linreg
loss = square_loss
batch_size = 10
for epoch in range(num_epochs):for X,y in data_iter(batch_size= batch_size,features=features,labels= labels):l = loss(net(X,w,b),y).sum()l.backward()sgd([w,b],lr,batch_size=batch_size)#梯度清零避免梯度累加w.grad.data.zero_()b.grad.data.zero_()train_l = loss(net(features,w,b),labels)print('epoch %d, loss %f' %(epoch +1 ,train_l.mean().item()))

epoch 1, loss 0.032550
epoch 2, loss 0.000133
epoch 3, loss 0.000053
epoch 4, loss 0.000053
epoch 5, loss 0.000053


基于pytorch的线性模型的实现

  1. 相关数据和初始化与上面构建相同
  2. 定义模型
import torch
from torch import nn
class LinearNet(nn.Module):def __init__(self, n_feature):# 调用父类的初始化super(LinearNet,self).__init__()# Linear(输入特征数,输出特征的数量,是否含有偏置项)self.linera = nn.Linear(n_feature,1)def forward(self,x):y = self.linera(x)return y
#打印模型的结构:
net = LinearNet(num_input)
print(net) 
# LinearNet( (linera): Linear(in_features=2, out_features=1, bias=True)
)
  1. 初始化模型的参数
from torch.nn import init
init.normal_(net.linera.weight,mean=0,std= 0.1)
init.constant_(net.linera.bias ,val=0)
  1. 定义损失函数
loss = nn.MSELoss()

5.定义优化算法

import torch.optim as optim
optimizer =  optim.SGD(net.parameters(),lr = 0.03)
print(optimizer)
  1. 训练模型:
num_epochs = 3
for epoch in range(1,num_epochs+1):for X,y in data_iter(batch_size= batch_size,features=features,labels= labels):output= net(X)l = loss(output,y.view(-1,1))optimizer.zero_grad()l.backward()optimizer.step()print('epoch %d ,loss: %f' %(epoch,l.item()) )

epoch 1 ,loss: 0.000159
epoch 2 ,loss: 0.000089
epoch 3 ,loss: 0.000066

http://www.wooajung.com/news/33461.html

相关文章:

  • 微网站建设 上海南京seo报价
  • 大连做网站优化互联网推广工作好做吗
  • 软件测试自学需要多久信息流优化师培训
  • 提供手机网站怎么做竞价推广什么意思
  • 媒体查询做响应式网站有哪些宁波seo排名优化
  • 制作网站的过程细节网店代运营靠谱吗
  • 局域网建设网站工具运营推广计划怎么写
  • 怎么做企业销售网站个人博客
  • 免费申请电信卡厦门seo排名外包
  • 南通网站建设方案外包裂变营销五种模式十六种方法
  • 网站在建设是什么意思g3云推广
  • 有关网站开发的文献或论文今日头条新闻视频
  • 在西安市建设工程交易中心网站上seo什么意思
  • web动态网站无线网络优化
  • 点击到达网站指定位置怎么做网络营销技巧培训
  • 建立网站后台河北seo技术交流
  • 利用小程序反向做网站百度竞价系统
  • 洛阳网站建设长沙企业网站设计
  • 宁波做简单网站的seo黑帽培训骗局
  • ps怎么做网站视频特效怎么创建网站教程
  • 武汉交友什么网站建设外链优化
  • 智能建造考研方向seo项目培训
  • 专业网站优化网站seo培训
  • 好的网站或网页推荐百度搜索引擎的网址是
  • 蒙牛网站是谁做的朋友圈的广告推广怎么弄
  • 商标注册网址seo的外链平台有哪些
  • 做网站三剑客深圳网络推广服务公司
  • 有多少种做网站后台程序爱站网站长seo综合查询
  • 常用网站如何在桌面做快捷方式跟我学seo
  • 南宁网站建设推荐q479185700顶上六安seo