轻松学Pytorch–环境搭建与基本语法

news/2024/7/5 2:21:07

点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达794e08722852d1410e6b46692cbe18ba.png

基本思路选择

以前我用过Caffe,用过tensorflow,最近一直在用pytorch感觉特别好用。所以打算写点我学习的过程跟经验,如果你是一个pytorch的高手自然可以忽略,如果你也打算学习pytorch框架,那就跟我一起学习吧


01.pytorch安装

演示系统环境

  • Windows10

  • Pytorch1.4

  • CUDA10.0

  • VS2015

  • Python3.6.5

CPU版本

install pytorch torchvision cpuonly -c pytorch

GPU版本

install pytorch torchvision cudatoolkit=10.0 -c pytorch

测试安装是否正常, CUDA支持正常

8f6de42a849cf98dc30ed207b7520e6c.png

测试结果一切正常!

安装的时候你还可以更直接点

pip install pytorch torchvision

就好啦!我知道很多人喜欢用各种python的工具跟IDE做开发,那些都是个人爱好,喜欢就好,但是千万别强迫别人跟你一样!有IDE强迫症!我从开始学习python就一直用pycharm!千万别问我好用不好用,方便不方便!觉得适合自己即可。

02.pytorch基本语法演示

演示了pytorch中基本常量、变量、矩阵操作、CUDA调用,numpy与tensor转化,维度转化,自动梯度等基本知识。代码如下:

from __future__ import print_function
import torch
import numpy as npprint(torch.__version__)# 定义矩阵
x = torch.empty(2, 2)
print(x)# 定义随机初始化矩阵
x = torch.randn(2, 2)
print(x)# 定义初始化为零
x = torch.zeros(3, 3)
print(x)# 定义数据为tensor
x = torch.tensor([5.1, 2., 3., 1.])
print(x)# 操作
a = torch.tensor([1.,2.,3.,4.,5.,6.,7.,8.])
b = torch.tensor([11.,12.,13.,14.,15.,16.,17.,18.])
c = a.add(b)
print(c)# 维度变换 2x4
a = a.view(-1, 4)
b = b.view(-1, 4)
c = torch.add(a, b)
print(c, a.size(), b.size())# torch to numpy and visa
na = a.numpy()
nb = b.numpy()
print("\na =",na,"\nb =", nb)# 操作
d = np.array([21.,22.,23.,24.,25.,26.,27.,28.], dtype=np.float32)
print(d.reshape(2, 4))
d = torch.from_numpy(d.reshape(2, 4))
sum = torch.sub(c, d)
print(sum, "\n sum = ", sum.size())# using CUDA
if torch.cuda.is_available():result = d.cuda() + c.cuda()print("\n result = ", result)# 自动梯度
x = torch.randn(1, 5, requires_grad=True)
y = torch.randn(5, 3, requires_grad=True)
z = torch.randn(3, 1, requires_grad=True)
print("\nx=",x, "\ny=",y, "\nz=",z)
xy = torch.matmul(x, y)
xyz = torch.matmul(xy, z)
xyz.backward()
print(x.grad, y.grad, z.grad)

运行输出结果:

1.4.0
tensor([[0., 0.],[0., 0.]])
tensor([[-0.4624, -1.1495],[ 1.9408, -0.1796]])
tensor([[0., 0., 0.],[0., 0., 0.],[0., 0., 0.]])
tensor([5.1000, 2.0000, 3.0000, 1.0000])
tensor([12., 14., 16., 18., 20., 22., 24., 26.])
tensor([[12., 14., 16., 18.],[20., 22., 24., 26.]]) torch.Size([2, 4]) torch.Size([2, 4])a = [[1. 2. 3. 4.][5. 6. 7. 8.]] 
b = [[11. 12. 13. 14.][15. 16. 17. 18.]]
[[21. 22. 23. 24.][25. 26. 27. 28.]]
tensor([[-9., -8., -7., -6.],[-5., -4., -3., -2.]]) sum =  torch.Size([2, 4])result =  tensor([[33., 36., 39., 42.],[45., 48., 51., 54.]], device='cuda:0')x= tensor([[ 0.3029, -0.4030, -0.9148, -0.9237,  0.7549]], requires_grad=True) 
y= tensor([[-0.9032, -0.4092, -0.0682],[ 0.3689, -0.9655, -0.1346],[ 1.5101,  1.4418,  0.1058],[ 1.0259, -1.6011,  0.4881],[-0.3989,  0.9156, -1.6290]], requires_grad=True) 
z= tensor([[ 1.4343],[ 2.2974],[-0.0864]], requires_grad=True)
tensor([[-2.2298, -1.6776,  5.4691, -2.2492,  1.6721]]) tensor([[ 0.4344,  0.6959, -0.0262],[-0.5781, -0.9260,  0.0348],[-1.3121, -2.1017,  0.0790],[-1.3249, -2.1222,  0.0798],[ 1.0827,  1.7342, -0.0652]]) tensor([[-3.0524],[ 1.1164],[-1.7437]])

记录一下,今天是第一篇,以后我争取每周更新一篇到两篇,请大家一起监督,有愿意输出这个方面内容,欢迎一起来努力!

千里之行始于足下!想支持我继续写下去就 点个赞 吧!其它没有要求了!

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲

在「小白学视觉」公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲

在「小白学视觉」公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

a6d086a378b2c35eadc81e15c546ad11.png

ef158a583e9c7ca4b9943f3be114974e.png


http://lihuaxi.xjx100.cn/news/270017.html

相关文章

一份 Spring Boot 项目搭建模板

点击上方蓝色“方志朋”,选择“设为星标”回复“666”获取独家整理的学习资料!前言建立一个全新的项目,或者把旧的庞大的项目,进行拆分成多个项目。在建立新的项目中,经常需要做一些重复的工作,比如说拷贝一…

终于有人把计算机视觉讲明白了

在人工智能机器学习的领域中,目前最火的莫过于计算机视觉了,这项技术一直广受关注,而其中的目标检测是计算机视觉领域中最常见的问题之一。从去年的 YOLOv4 发布后,目标检测框架被问的最多的问题就是:“有没有同学复现…

深度学习概述:NLP vs CNN

作者 | Manish Kuwar译者 | 苏本如,责编 | 郭芮头图 | CSDN 下载自视觉中国出品 | CSDN(ID:CSDNnews)以下为译文:当今,人工智能已经不仅仅是一个技术术语了。这项技术在过去十年的时间内几乎将其影响扩展到…

java linkedlist二维,如何在Java中制作二维LinkedList?

for example:public static LinkedList ll new LinkedList;解决方案from your question, I think (not 100% sure) you are looking forjava.util.LinkedHashMapin your case, it would be LinkedHashMapfrom java doc:Hash table and linked list implementation of the Map …

Java 读写Properties配置文件

转自:https://www.cnblogs.com/xudong-bupt/p/3758136.html 1.Properties类与Properties配置文件 Properties类继承自Hashtable类并且实现了Map接口,也是使用一种键值对的形式来保存属性集。不过Properties有特殊的地方,就是它的键和值都是字…

linux 环境配置 安装jdk

一. 下载jdk5.0 for linux 到sun的主页 http://java.sun.com/j2se/1.5.0/download.jsp 下载jdk安装文件jdk-1_5_0_05-linux-i586.bin 二. 解压安装jdk 在shell终端下进入jdk-1_5_0_05-linux-i586.bin文件所在目录,执行命令 ./jdk-1_5_0_05-linux-i586.bin 这时会出现…

1016. Phone Bills (25)

时间限制400 ms内存限制65536 kB代码长度限制16000 B判题程序Standard作者CHEN, Yue去掉非法数据计算账单A long-distance telephone company charges its customers by the following rules:Making a long-distance call costs a certain amount per minute, depending on the…

万字长文综述目标检测领域,你要的都在这里

来源 | AI专栏(ID: pursue-Y-future)目标检测是计算机视觉中的一个重要问题,近年来传统检测方法已难以满足人们对目标检测效果的要求,随着深度学习在图像分类任务上取得巨大进展,基于深度学习的目标检测算法逐渐成为主…