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

北京工程建设质量协会网站电商设计英文

北京工程建设质量协会网站,电商设计英文,上海畔游网络科技有限公司,好的活动策划网站动手学深度学习网址#xff1a;动手学深度学习 注#xff1a;本部分只对基础知识进行简单的介绍并附上完整的代码实现#xff0c;更多内容可参考上述网址。 简述 需要的准备知识 数学的偏导线性代数 线性模型 回归是能为一个或多个自变量与因变量之间关系建模的一类方…动手学深度学习网址动手学深度学习 注本部分只对基础知识进行简单的介绍并附上完整的代码实现更多内容可参考上述网址。 简述 需要的准备知识 数学的偏导线性代数 线性模型 回归是能为一个或多个自变量与因变量之间关系建模的一类方法。 在自然科学和社会科学领域回归经常用来表示输入和输出之间的关系。 线性回归基于几个简单的假设 首先假设自变量x和因变量y之间的关系是线性的 即y可以表示为中元素的x加权和这里通常允许包含观测值的一些噪声 其次我们假设任何噪声都比较正常如噪声遵循正态分布。 给定一个数据集线性回归的目标是寻找模型的权重w和偏差b。公式为 将权重放到一个向量里面变成 损失函数 使用平方误差 其中y是真实的数据。 将上式展开为 最终的目标就是寻找一组参数w,b这组参数能最小化在所有训练样本上的总损失即 优化方法 在训练过程中需要不断优化w和b使得最终的损失达到最小这就需要一种优化方法通常使用的式梯度下降方法。 对于线性回归参数更新的形式为 因为在每一次更新参数之前我们必须遍历整个数据集。 因此**我们通常会在每次需要计算更新的时候随机抽取一小批样本 这种变体叫做小批量随机梯度下降。**如上图所示其中的B就是选取的小批量样本个数n是学习率。 将上述式子展开为 代码 从头开始实现线性回归 1.生成数据集 我们生成一个包含1000个样本的数据集 每个样本包含从标准正态分布中采样的2个特征。 import torch import random from d2l import torch as d2l # 生成数据集 def generate_data(w,b,num_examples):# 生成正太分布的数据X torch.normal(0,1,(num_examples,len(w)))# 进行矩阵乘法y torch.matmul(X,w) by torch.normal(0,0.01,y.shape)return X,y.reshape((-1,1)) # 真实的w true_w torch.tensor([2,-3.4]) # 真实的b true_b 4.2 # features shape: N * len(W) # lables shape: N features,labels generate_data(true_w,true_b,1000) print(features:,features[0],\nlabel:,labels[0]) # 展示生成的数据 d2l.set_figsize() d2l.plt.scatter(features[:,1].detach().numpy(),labels.detach().numpy(),1)2.读取数据操作 定义一个data_iter函数 该函数接收批量大小、特征矩阵和标签向量作为输入生成大小为batch_size的小批量。 # 小批量读取数据集 def data_iter(batch_size,features,lables):# 获取第一维的大小num_examples len(features)indices list(range(num_examples))# 打乱顺序random.shuffle(indices)for i in range(0,num_examples,batch_size):batch_indices torch.tensor(indices[i:min(ibatch_size,num_examples)])yield features[batch_indices],labels[batch_indices] # 调用该函数 # 小批量大小为10 batch_size 10 for X,y in data_iter(batch_size,features,batch_size):print(X,\n,y)break3.定义模型相关部分 1初始化参数 我们通过从均值为0、标准差为0.01的正态分布中采样随机数来初始化权重 并将偏置初始化为0。 2定义模型 使用wxb形式。 3损失函数 使用平方损失函数 4优化方法 在每一步中使用从数据集中随机抽取的一个小批量然后根据参数计算损失的梯度。 接下来朝着减少损失的方向更新我们的参数。 每一步更新的大小由学习速率lr决定。 因为我们计算的损失是一个批量样本的总和所以我们用批量大小batch_size 来规范化步长这样步长大小就不会取决于我们对批量大小的选择。 # 初始化模型参数 def init_params():# w服从均值为0,方差为0.01的正太分布,大小为(2,1)w torch.normal(0,0.01,(2,1),requires_grad True)b torch.zeros(1,requires_grad True)return w,b # 定义模型 def linear_reg(X,w,b):# wx breturn torch.matmul(X,w) b# 定义损失函数 def squared_loss(y_pred,y):return (y_pred - y.reshape(y_pred.shape)) ** 2 / 2# 定义优化算法 def sgd(params,lr,batch_size):# 使梯度计算disablewith torch.no_grad():for param in params:param - lr * param.grad / batch_size# 手动将梯度设置成 0 在下一次计算梯度的时候就不会和上一次相关了param.grad.zero_()4.训练模型 执行以下循环 初始化参数重复以下训练直到完成 计算梯度 l.sum().backward()更新参数sgd # 训练 # 学习率 lr 0.02 # 迭代次数 num_epoches 3 net linear_reg loss squared_loss w,b init_params() for epoch in range(num_epoches):for X,y in data_iter(batch_size,features,labels):l loss(net(X,w,b),y)# 后向传播计算梯度l.sum().backward()sgd([w,b],lr,batch_size)with torch.no_grad():train_l loss(net(features,w,b),labels)print(fepoch {epoch 1},loss {float(train_l.mean())})print(fw的估计误差: {true_w - w.reshape(true_w.shape)}) print(fb的估计误差: {true_b - b})线性回归的框架实现 # 简洁实现 import numpy as np import torch from torch.utils import data from d2l import torch as d2l from torch import nntrue_w torch.tensor([2,-3.4]) true_b 4.2 # 生成数据集 features,labels d2l.synthetic_data(true_w,true_b,1000)def load_dataset(data_arrs,batch_size,is_train True):dataset data.TensorDataset(*data_arrs)return data.DataLoader(dataset,batch_size,shuffleis_train)batch_size 10 data_iter load_dataset((features,labels),batch_size) # iter构造迭代器 next(iter(data_iter))# 定义模型 net nn.Sequential(nn.Linear(2,1)) # 初始化参数,注意上面使用的是nn.Sequential创造的是一个序列,所以net[0]表示我们的网络 net[0].weight.data.normal_(0,0.01) net[0].bias.data.fill_(0) # 损失函数 loss nn.MSELoss() # 优化算法 trainer torch.optim.SGD(net.parameters(),lr 0.03) # 训练 num_epoches 3 for epoch in range(num_epoches):for X,y in data_iter:l loss(net(X),y)# 将梯度重置为0trainer.zero_grad()# 计算梯度l.backward()# 更新所有的参数trainer.step()l loss(net(features),labels)print(fepch {epoch 1} loss {l:f}) w net[0].weight.data b net[0].bias.data print(fw的估计误差: {true_w - w.reshape(true_w.shape)}) print(fb的估计误差: {true_b - b})
http://www.dnsts.com.cn/news/222739.html

相关文章:

  • 福建省住房城乡建设部网站北京wordpress开发团队
  • 网站建设 找客户ui设计官网
  • 一个ip地址上可以做几个网站欧洲最新消息
  • 个人能为公司网站备案吗能看各种网站的浏览器
  • 不用备案的网站工厂管理软件
  • 如何做网站霸屏网站的交互设计有什么
  • 莞城微网站建设网站建设存在的具体问题
  • 网站 做实名认证吗创建一个网站多少钱
  • 公共资源中心网站建设潘家园网站建设公司
  • 没注册可以做网站吗优惠券的网站制作
  • 自建国外购物网站中型网站 收益
  • 鹿泉营销型网站制作价格低整合营销案例分析
  • 广东自考网站建设管理wordpress主题no7
  • wordpress自适应手机顶部没有链接seo实战培训seo8
  • 如何做垂直网站网站建设移动端官网
  • 茂名市城乡和住房建设局网站遵义网络推广软文
  • 云平台网站建设钉钉付费版多少钱
  • 现在找个网站这么难的吗胶州专业建站
  • 网站公司怎么做的网站被k是怎么回事
  • 潍坊公司做网站seo网络排名优化技巧
  • 做网站专用软件wordpress主页与文章页
  • dedecms手机网站国家工商网查询企业信息
  • 江阴建设局网站网站建设满意度调查问卷
  • 南通网站建设系统成都手机网站设计
  • 佛山高端网站制作公司网站的盈利方法
  • wordpress的页面链接错乱seo优化方案
  • 宣传网站制作方案wordpress怎么调用默认的分页代码
  • 成都科技网站建设wifi和卫星有关系吗
  • 长沙一站式网站建设网站开发合同模板免费
  • wordpress首部如何添加自定义代码廊坊seo外包公司费用