PytorchAPI的使用及在GPU的使用和优化

API

调用API:和手动实现的思路是一样的。#1,#2这两个步骤是通用的步骤,相当于建立一个模型,之后你具体的数据直接丢进去就行了。只需要按着这样的样式打代码就行,死的东西,不需要你自己创造。

import torch
import torch.nn as nn
from torch.optim import SGD#0 准备数据
x = torch.rand([500,1])
y_true = 3*x + 0.8#1.定义模型
class MyLinear(nn.Module):def __init__(self):#继承父类的initsuper(MyLinear,self).__init__()self.linear = nn.Linear(1,1)def forward(self,x):out = self.linear(x)return out#2.实例化模型,优化器类实例化,loss实例化
my_linear = MyLinear()
optimizer = SGD(my_linear.parameters(),0.001)
loss_fn = nn.MSELoss()#3.循环,进行梯度下降,参数的更新
for i in range(20000):#得到预测值y_predict = my_linear(x)loss = loss_fn(y_predict,y_true)#梯度置为0optimizer.zero_grad()#反向传播loss.backward()#参数更新optimizer.step()if i%50==0:print(loss.item(),list(my_linear.parameters()))

可以看出已经很接近目标的数了

GPU版本

区别的地方:

1.

 2.

3.

代码:

import torch
import torch.nn as nn
from torch.optim import SGD#定义一个device对象
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")#0 准备数据
x = torch.rand([500,1]).to(device)
y_true = 3*x + 0.8#1.定义模型
class MyLinear(nn.Module):def __init__(self):#继承父类的initsuper(MyLinear,self).__init__()self.linear = nn.Linear(1,1)def forward(self,x):out = self.linear(x)return out#2.实例化模型,优化器类实例化,loss实例化
my_linear = MyLinear().to(device)
optimizer = SGD(my_linear.parameters(),0.001)
loss_fn = nn.MSELoss()#3.循环,进行梯度下降,参数的更新
for i in range(20000):#得到预测值y_predict = my_linear(x)loss = loss_fn(y_predict,y_true)#梯度置为0optimizer.zero_grad()#反向传播loss.backward()#参数更新optimizer.step()if i%50==0:print(loss.item(),list(my_linear.parameters()))

优化

 

 3介于1和2之间

4.动量法:(实时更新梯度,用之前的梯度和现在的梯度进行一个加权求和变为新的梯度)

mini-batch SGD算法虽然这种算法能够带来很好的训练速度,但是在到达最优点的时候并不能够总是真正到达最优点,而是在最优点附近徘徊。

另一个缺点就是mini-batch SGD需要我们挑选一个合适的学习率,当我们采用小的学习率的时候,会导致网络在训练的时候收敛太慢;当我们采用大的学习率的时候,会导致在训练过程中优化的幅度跳过函数的范围,也就是可能跳过最优点。我们所希望的仅仅是网络在优化的时候网络的损失函数有一个很好的收敛速度同时又不至于摆动幅度太大。

5和6都是实时改变学习率,用之前的学习率和现在的学习率进行加权求和,借此来更新学习率

7就是把学习率和梯度都进行更新

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/542009.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一款Jenkins的综合漏洞利用工具-JenkinsExploit-GUI

一、使用 jdk版本 在windows或linux使用jdk8的哪一个版本应该都可以,在macOS里需要jdk8u较高的版本,比如jdk8u321 二、外置payload 从release下载windows_tools,linux_tools或macOS_tools并放在与JenkinsExploit-GUI-*-SNAPSHOT.jar相同的目录,或者可以自行打包tools_source…

fs模块 之 文件读取

fs 文件读取: 利用文件读取而不是直接打开文本查看的目的是为了实现自动化 读取文件的应用场景:电脑开机/程序运行/播放视频音乐/上传文件... 一、异步读取 (1)语法:fs.readFile(path,[options],callback); 以之前写的文件写…

idea maven 项目融合

背景 :项目A 和项目B 是两个独立的多模块项目,项目A 和项目B ,均为独立的数据源 。其中项目B 有两个数据原。 需要将项目B 以多模块的方式融合进项目A。 解决版本。建立项目C,只含有pom的,空项目,项目A和项…

C++_学习String

1.标准库中的string类 1. 字符串是表示字符序列的类 2. 标准的字符串类提供了对此类对象的支持,其接口类似于标准字符容器的接口,但添加了专门用于操作单字节字符字符串的设计特性 3. string 类是使用 char( 即作为它的字符类型,使用它的默…

MySQL—redo log、undo log以及MVCC

MySQL—redo log、undo log以及MVCC 首先回忆一下MySQL事务的四大特性:ACID,即原子性、一致性、隔离性和持久性。其中原子性、一致性、持久性实际上是由InnoDB中的两份日志保证的,一份是redo log日志,一份是undo log日志&#xff…

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:List)

列表包含一系列相同宽度的列表项。适合连续、多行呈现同类数据,例如图片和文本。 说明: 该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。该组件内容区小于一屏时,默认没有回弹效果。…

16.WEB渗透测试--Kali Linux(四)

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于: 易锦网校会员专享课 上一个内容:15.WEB渗透测试--Kali Linux(三)-CSDN博客 1.crunch简介与使用 C…

构建通用机器人模型

构建通用机器人模型需要涉及到机器人的机械设计、控制系统设计以及相应的软件开发。这样的过程涉及到许多专业知识,包括机械工程、电子工程、计算机科学等。以下是一个简化的通用机器人模型构建过程: 定义机器人需求:首先,你需要…

【SRE系列之docker容器】--dockerfile镜像优化

dockerfile镜像优化 1.1 镜像优化方法 系统镜像采用ubuntu或者alpine,会比centos少1G左右编写业务镜像时从官网拉取镜像,其余配置根据业务需求再配置编写dockerfile时把不用的安装包卸载或者删除尽量减少run命令的使用(一个run命令&#xf…

C. Arrow Path

思路&#xff1a;可以bfs来写&#xff0c;也可以用思维来解 代码&#xff1a;思维代码 void solve(){cin >> n;for(int i 0;i < 2;i )cin >> s[i];for(int i 0;i < 2;i ){// cout << s[i] << endl;for(int j 0;j < n;j ){if(i 0){if(((…

《雷德斯东家》 第一话——火把花的回忆

引子 温馨提示:本系列小说为福瑞向! ------------------------------------------------------------------------------------------------------------------------- 作者 RedstoneCuberoot 地图 RedstoneCuberoot、梓元sama 审核 Brenda_fyx、RedstoneCuberoot Minecraft大…

SoloX - Android/iOS性能数据实时采集工具

文章目录 一、简介二、环境要求三、安装部署四、使用方法4.1 通过浏览器直接使用4.2 使用Python收集4.3 使用API收集 一、简介 SoloX是一个可以实时收集Android/iOS性能数据的web工具。 快速定位分析性能问题&#xff0c;提升应用的性能和品质。 无需ROOT/越狱&#xff0c;即插…