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

西安网站建设方案维护wordpress 点评网

西安网站建设方案维护,wordpress 点评网,yahoo提交网站入口,信息化工作总结 网站建设一、自动微分概念 自动微分#xff08;Automatic Differentiation#xff0c;AD#xff09;是一种利用计算机程序自动计算函数导数的技术#xff0c;它是机器学习和优化算法中的核心工具#xff08;如神经网络的梯度下降#xff09;#xff0c;通过反向传播计算并更新梯…一、自动微分概念 自动微分Automatic DifferentiationAD是一种利用计算机程序自动计算函数导数的技术它是机器学习和优化算法中的核心工具如神经网络的梯度下降通过反向传播计算并更新梯度。 计算梯度的目的是更新权重w和b其中value是梯度值学习率需要提前指定求导计算梯度前面我们学过了手动求导这次使用自动微分的方法来简化我们的工作量。 注意 1. w和b一定是可自动微分的张量类型是浮点型超参数requries_gradTure表示允许自动微分。 2. detach()自动微分的张量不能转换成numpy数组, 通过 张量.detach().numpy() 剥离成不自动微分后可以转换。detach()返回一个与当前张量共享数据的新张量该张量是不开启自动微分的不参与梯度计算。 clone()返回一个与当前张量数据相同的新张量默认开启自动微分但新张量拥有独立的存储。 3. 默认梯度是累加的,所以多轮中每个轮次需要在自动微分之前进行清零 4. 查看张量底层数据地址时推荐使用 张量名.data_ptr()  import torch# TODO 单轮 #定义权重并开启自动微分 w torch.tensor([10,20],requires_gradTure,dtypetorch.float) #定义损失函数loss,cost,criterion... loss 2 * w**2 #自动微分求梯度自动更新梯度 loss.sun().backward() #手动更新权重 w.data w.data - 0.01*w.grad# TODO 多轮 #定义权重并开启自动微分 w torch.tensor([10,20],requires_gradTure,dtypetorch.float) #定义遍历轮次 epochs 500 for epoch in range(epochs):loss 2 * w**2# 默认梯度是累加的所以每轮需要在自动微分之前进行清零if w.grad is not None:w.grad.zero_()loss.sum().backward()# 格式化输出print(f当前轮次:{epoch 1} 当前权重: {w.data},固定学习率:{0.01} 更新后梯度: {w.grad},下一个权重: {w.data - 0.01 * w.grad})#手动更新权重w.data w.data - 0.01*w.grad 推导w和b的方法 import torch x torch.ones(2, 5) y torch.zeros(2, 3) w torch.randn(5, 3, requires_gradTrue) b torch.randn(3, requires_gradTrue)# 1.首先获取损失函数 loss_fn torch.nn.MSELoss() # 2.然后,计算预测值- zwxb 注意: 这里面的wx是矩阵乘法需要遵循 (n,m)*(m,p)(n,p) z x.matmul(w) b # 3.接着,根据损失函数计算损失值 loss loss_fn(z, y) # 4.最后,反向传播推导更新梯度 loss.sum().backward()# 5.打印结果 print(fw.grad: {w.grad}) print(fb.grad: {b.grad}) 二、 反向传播及案例 正向传播从输入到输出目的是预测结果和损失值 反向传播从输出到输入更新参数做出优化。 案例使用pytorch构建一个回归模型 步骤 1.获取数据集提前封装数据为张量 2.模型训练预测以及计算损失值 3.绘制损失曲线以及预测和真实值的拟合线 from sklearn.datasets import make_regression import torch from torch.utils.data import DataLoader, TensorDataset from torch.nn import Linear, MSELoss from torch.optim import SGD import matplotlib.pyplot as plt plt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] False# 1.获取数据集提前封装成张量 def get_data():X,y,coef make_regressionn(n_samples100,n_features1,n_targets1,noise10,random_state1,coefTure,bias14.5)X torch.tensor(X,dtypetorch.float32)y torch.tensor(y,dtypetorch.float32)return X,y,coef# 2.模型训练预测及损失值计算 def get_model_and_loss_list(x, y, epochs):# 2.1 处理数据封装为数据加载器为了分批次训练避免内存溢出dataloader DataLoader(TensorDataset(x,y),batch_size 5,shuffleTure)# 2.2 创建模型对象为了模型预测model Linear(in_features1,out_features1)# 2.3 创建损失函数对象为了计算损失值loss_fn MSELoss()# 2.4 创建SGD优化器对象为了更新模型参数optimizer SGD(model.parameters(),lr0.03)# 2.5 模型训练预测和计算损失# 2.5.1 定义一个空列表用于保存每轮损失值再定义累加损失和批次用于计算每轮的损失值loss_list,total_loss,batch_cnt [],0.0,0# for循环外循环轮次内循环批次for epoch in range(epochs):for batch_x,batch_y in dataloader:# [重点] 正向传播# 计算预测值y_predict model(batch_x)# 计算损失值MSE计算要求形状必须一致否则自动广播会出现无效计算loss loss_fn(y_predict,batch_y.reshape(-1,1))# 累加损失和批次total_loss loss.item()batch_cnt 1# [重点] 反向传播# 梯度清零optimizer.zero_grad()# 梯度计算loss.backward()# 参数更新 step()底层是w1 w0-lr*梯度optimizer.step()# TODO 内层循环结束,即一轮结束,可以计算每轮损失值,并保存到列表中epoch_loss total_loss / batch_cntloss_list.append(epoch_loss)print(f第{epoch 1}轮,损失值为:{epoch_loss:.2f})# TODO 外层循环结束,即所有轮次结束,可以返回模型和损失值列表# 打印模型参数字典print(f模型参数:{model.state_dict()})# print(f模型权重:{model.weight}, 偏置:{model.bias})# 返回结果return model, loss_list# 3.绘制损失曲线及预测和真实值拟合线 def plot_show(epochs, model, loss_list, x, y, coef):# todo 1.绘制每轮损失曲线plt.plot(range(epochs), loss_list)plt.xlabel(训练的轮数)plt.ylabel(该轮的平均损失)plt.title(损失变化曲线图)plt.grid()plt.show()# todo 2.绘制预测和真实值拟合线plt.scatter(x, y)# 使用x的最小值,最大值生成1000个x值等差张量X torch.linspace(x.min(), x.max(), 1000)# 细节: numpy * 张量 - 不可以 张量 * numpy - 可以, 要么把v放到前面位置要么把coef转为张量y_pred torch.tensor([v * model.weight model.bias for v in X])y_true torch.tensor([v * coef 14.5 for v in X])plt.plot(X, y_pred, label训练, colorred)plt.plot(X, y_true, label真实, colorgreen)plt.legend()plt.grid()plt.show()if __name__ __main__:# 1.获取数据集,提前封装数据为张量x, y, coef get_data()# 2.模型训练预测以及计算损失值epochs 4000model, loss_list get_model_and_loss_list(x, y, epochs)# 3.绘制损失曲线以及预测和真实值拟合线plot_show(epochs, model, loss_list, x, y, coef)
http://www.pierceye.com/news/74185/

相关文章:

  • 网站开发外包公司合同范本网站交易平台怎么注册
  • 公司做网站提供资料开网店在线咨询
  • 如何推广网站方法wordpress的框架
  • 中国建设银行福州招聘信息网站网站公司建设公司
  • 企业建设网站有哪些费用重庆沙坪坝地震
  • 资讯类网站建设资质要求python基础教程百度网盘
  • 做公众号封面图的网站做网站需要几个服务器
  • wordpress 友链seo sem是什么
  • 有什么网站可以免费搭建网址临沂网站建设服务商
  • 宁波网站建设设计制作方案与价格新手如何做代理商
  • sql2008做网站旅游网站域名应该如何设计
  • 企业网站建设费用记入制作小动画的软件
  • 网站产品链接怎么做网络规划与设计论文开题报告
  • 1元建站南宁网站建设方案服务
  • 成都网站优化报价昆明网站建站公司
  • 搞定设计网站做的图怎么下载不了北京网站建设正邦
  • 重庆做手机网站建设成都疾控最新通告
  • wui网站建设wordpress页面增加目录
  • 企业网站建设哪家服务好我的世界是谁做的视频网站
  • 给女朋友做网站建筑招聘信息最新招聘2022
  • 陕西专业网站开发联系电话做电影ppt模板下载网站
  • 网站分析流程ysl千人千色t9t9t9t9
  • 公司网站是如何搭建的泉州微信网站开发
  • 企业法律平台网站建设方案用软件做seo网站关键词推广
  • 设计站重庆网站建设技术支持
  • 网站转移权重wordpress慢死了
  • 陕西建设机械官方网站网站建设属于什么支出
  • 潍坊的网站建设wordpress自定义菜单
  • 哪些网站是python做的谷歌app下载 安卓
  • 官方查企业信息的网站曹县建设局网站