PyTorch的飞速发展

  • 框架好不好用,看图说话!

安装PyTorch:使用PIP的方法比较简单

先查看你的cuda版本:

nvidia-smi

我的电脑cudaban版本是11.1的

用下面的网址找到对应的cuda版本,然后复制命令行在miniconda或者Anaconda的环境里安装即可。

https://pytorch.org/get-started/previous-versions/https://pytorch.org/get-started/previous-versions/

我的电脑安装命令就是:

pip install torch==1.9.0+cu111 torchvision==0.10.0+cu111 torchaudio==0.9.0 -f https://download.pytorch.org/whl/torch_stable.html

安装完成后,打开jupyter notebook:

import torch
torch.__version__
'1.9.0+cu111'

安装成功后会显示你安装的版本号

 接下来用一个简单的小例子做GPU训练:

线性回归

构造一组输入数据X和其对应的标签y

import numpy as np
x_values = [i for i in range(11)]
x_train = np.array(x_values, dtype=np.float32)
x_train = x_train.reshape(-1, 1)
x_train.shape
(11, 1)
y_values = [2*i + 1 for i in x_values]#y=2x+1
y_train = np.array(y_values, dtype=np.float32)
y_train = y_train.reshape(-1, 1)# reshape把数据转换成矩阵格式
y_train.shape

(11, 1)

import torch
import torch.nn as nn

线性回归模型

  • 其实线性回归就是一个不加激活函数的全连接层
class LinearRegressionModel(nn.Module):def __init__(self, input_dim, output_dim):super(LinearRegressionModel, self).__init__()self.linear = nn.Linear(input_dim, output_dim)  def forward(self, x):out = self.linear(x)return out
input_dim = 1
output_dim = 1model = LinearRegressionModel(input_dim, output_dim)
model
LinearRegressionModel((linear): Linear(in_features=1, out_features=1, bias=True)
)

指定好参数和损失函数

epochs = 1000
learning_rate = 0.01
optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate)
criterion = nn.MSELoss()

训练模型

for epoch in range(epochs):epoch += 1# 注意转行成tensorinputs = torch.from_numpy(x_train)labels = torch.from_numpy(y_train)# 梯度要清零每一次迭代optimizer.zero_grad() # 前向传播outputs = model(inputs)# 计算损失loss = criterion(outputs, labels)# 返向传播loss.backward()# 更新权重参数optimizer.step()if epoch % 50 == 0:print('epoch {}, loss {}'.format(epoch, loss.item()))
epoch 50, loss 0.002772861160337925
epoch 100, loss 0.0015815184451639652
epoch 150, loss 0.0009020335855893791
epoch 200, loss 0.0005145024042576551
epoch 250, loss 0.0002934486838057637
epoch 300, loss 0.00016736680117901415
epoch 350, loss 9.546181536279619e-05
epoch 400, loss 5.444709677249193e-05
epoch 450, loss 3.105417636106722e-05
epoch 500, loss 1.771174902387429e-05
epoch 550, loss 1.0104487046191934e-05
epoch 600, loss 5.762907676398754e-06
epoch 650, loss 3.2866553283383837e-06
epoch 700, loss 1.8745893157756655e-06
epoch 750, loss 1.0692875775930588e-06
epoch 800, loss 6.096717015680042e-07
epoch 850, loss 3.4797531611729937e-07
epoch 900, loss 1.9841668574827054e-07
epoch 950, loss 1.1307743363886402e-07
epoch 1000, loss 6.446471445542556e-08

测试模型预测结果

predicted = model(torch.from_numpy(x_train).requires_grad_()).data.numpy()
predicted
array([[ 0.9995279],[ 2.9995959],[ 4.999664 ],[ 6.999732 ],[ 8.9998   ],[10.999867 ],[12.999936 ],[15.000004 ],[17.00007  ],[19.00014  ],[21.000206 ]], dtype=float32)

模型的保存与读取

torch.save(model.state_dict(), 'model.pkl')
model.load_state_dict(torch.load('model.pkl'))

使用GPU进行训练

  • 只需要把数据和模型传入到cuda里面就可以了
import torch
import torch.nn as nn
import numpy as npclass LinearRegressionModel(nn.Module):def __init__(self, input_dim, output_dim):super(LinearRegressionModel, self).__init__()self.linear = nn.Linear(input_dim, output_dim)  def forward(self, x):out = self.linear(x)return outinput_dim = 1
output_dim = 1model = LinearRegressionModel(input_dim, output_dim)device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
model.to(device)criterion = nn.MSELoss()learning_rate = 0.01optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate)epochs = 1000
for epoch in range(epochs):epoch += 1inputs = torch.from_numpy(x_train).to(device)labels = torch.from_numpy(y_train).to(device)optimizer.zero_grad() outputs = model(inputs)loss = criterion(outputs, labels)loss.backward()optimizer.step()if epoch % 50 == 0:print('epoch {}, loss {}'.format(epoch, loss.item()))
epoch 50, loss 0.16363602876663208
epoch 100, loss 0.09333190321922302
epoch 150, loss 0.053232986479997635
epoch 200, loss 0.03036210499703884
epoch 250, loss 0.01731737330555916
epoch 300, loss 0.00987718254327774
epoch 350, loss 0.005633558612316847
epoch 400, loss 0.0032131734769791365
epoch 450, loss 0.0018326828721910715
epoch 500, loss 0.0010452885180711746
epoch 550, loss 0.0005961966817267239
epoch 600, loss 0.00034004641929641366
epoch 650, loss 0.0001939479261636734
epoch 700, loss 0.00011062397243222222
epoch 750, loss 6.309369928203523e-05
epoch 800, loss 3.5986384318675846e-05
epoch 850, loss 2.052540730801411e-05
epoch 900, loss 1.1706931218213867e-05
epoch 950, loss 6.677555120404577e-06
epoch 1000, loss 3.8078255784057546e-06

pytorch安装与测试相关推荐

  1. PyTorch安装测试训练建自己的数据集

    Pytorch安装测试训练建自己的数据集 前言 一.PyTorch是什么? 二.PyTorch环境搭建 1.设备要求 2.安装Pytorch 3.验证PyTorch 二.CIFAR10测试 1.关于C ...

  2. Tesla M40 下Ubuntu anaconda pycharm pytorch安装

    Tesla M40 训练机组装参考:http://t.csdn.cn/7Fx13,写的很详细 显卡:Tesla M40 24GB (2张) 显卡驱动版本(推荐):470.57.02 cuda版本:11 ...

  3. pytorch安装和tensorflow环境搭建和cuda加速和cudann安装教程记录日期2022.10.20日

    pytorch安装的过程踩得坑,需要教程的直接看最后红字. 5月31日开始的 最近想要学习神经网络于是. 首先在网上查一下,这些人都用什么库写的神经网络. numpy出现10次 TensorFlow出 ...

  4. AI 图片截取、ffmpeg使用及安装, anaconda环境,图片标注(labelme),模型训练(yolov5),CUDA+Pytorch安装及版本相关问题

    AI 图片截取(ffmpeg), anaconda环境,图片标注(labelme),模型训练(yolov5),CUDA+Pytorch安装及版本相关问题 一.截取有效图片 录制RTSP视频脚本 #!/ ...

  5. 动手学深度学习(二)——windows10系统中pytorch安装(从显卡驱动开始)

    文章目录 pytorch安装 一.配置及准备: 二.安装步骤: 1.下载与安装CUDA 2.下载与安装CuDNN 3. 验证CUDA和CuDNN的安装 4. 安装pytorch 5.测试pytorch ...

  6. 安装和测试Python第三方库20200628

    安装和测试Python第三方库 #!/usr/bin/env python # coding:utf-8import sysprint("Python解释器在磁盘上的存储路径:", ...

  7. 【MindStudio训练营第一季】MindStudio安装及测试

    MindStudio安装及测试 环境准备 安装CANN开发套件包 安装方案 其他注意事项(==都是血的教训==) 安装MindStudio 下载安装包 安装依赖 安装字体 安装MindStudio 测 ...

  8. 超详细的的PyTorch安装教程,成功率高,适合初学者,亲测可用。

    啰嗦几句:网上的教程很多,安装的方法多种多样,操作复杂,成功率还不高.小编在淘宝专门帮助不会安装的小伙伴远程配置环境,这方法都是测试过了,适用大部分人的,完全按照文章来操作,基本都是可以安装成功的. ...

  9. Tensorflow + PyTorch 安装(CPU + GPU 版本)

    目录 一.Anaconda 安装 二.安装 TensorFlow-CPU 1.配置环境 2.安装 Tensorflow 三.安装TensorFlow-GPU 1.是否可安装GPU版Tensorflow ...

最新文章

  1. 5.USTC生命科学医学部学生会
  2. eventbus多个订阅_番石榴的EventBus –简单的发布者/订阅者
  3. 1-9其他数据库注入
  4. C语言TCP客户端获取时间
  5. $.ajax 简单记录
  6. ASP.NET 学习笔记
  7. iOS直播点赞动画,iOS直播心型点赞动画
  8. win10搭建无盘服务器配置,win10电脑搭建无盘工作站
  9. 此更新不适用于您的计算机 kb4012212,这才是正确的全球勒索软件处置方法(含Windows补丁)...
  10. word文件转pdf转换器11.0注册码
  11. 水域大小 Java_我的世界:Java版开发者们畅聊水域更新
  12. Lesson 38
  13. 微信双开,超简单,无需bat,无需代码
  14. ubuntu下安装git安装及使用
  15. python 经纬度计算相关
  16. CentOS7 DNS配置一条龙全套服务
  17. ffmpeg 命令行总结
  18. 相关词挖掘-下拉词挖掘免费工具-用户都在相关搜索的关键词挖掘
  19. 使用Python和C++的写数据结构和算法
  20. 深圳多区发布小一初一学位政策-查查吧深圳学区房地图

热门文章

  1. php下级会员,php如何查找会员无限分类的所有上级和所有下级
  2. 寻找平衡点的俩种方法
  3. Combo Box (组合框)控件
  4. 关于Qt中QTabWidget每个页面关闭按钮
  5. XMIND TO TESTCASE
  6. 肇庆高铁站訂票電話是多少
  7. python-OpenCV自学,对高斯双边滤波,均值迁移的代码及原理浅析。
  8. PS入门(1-1) RGB色彩模式
  9. matlab 状态方程离散化,一种将离散化状态方程映射为并行多处理器计算机的方法...
  10. 解决WIN8磁盘占用率100%的问题电脑从WINXP换WIN7,WIN8非电脑配置低档但系统运行很卡的问题。——硬盘4K对齐