Pytorch环境搭建与基本语法


Posted in Python onJune 03, 2020

来源 | OpenCV学堂

作者 | gloomyfish

基本思路选择

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

pytorch安装

01

演示系统环境

  • 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支持正常

Pytorch环境搭建与基本语法

测试结果一切正常!

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

pip install pytorch torchvision

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

Pytorch基本语法演示

02

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

from __future__ import print_function
import torch
import numpy as np

print(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]])

总结

到此这篇关于Pytorch?环境搭建与基本语法的文章就介绍到这了,更多相关Pytorch?环境搭建与基本语法内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中处理字符串之endswith()方法的使用简介
May 18 Python
使用Django的模版来配合字符串翻译工作
Jul 27 Python
Python中对象的引用与复制代码示例
Dec 04 Python
Python3.4解释器用法简单示例
Mar 22 Python
Python如何处理大数据?3个技巧效率提升攻略(推荐)
Apr 15 Python
python之pyqt5通过按钮改变Label的背景颜色方法
Jun 13 Python
使用Pandas对数据进行筛选和排序的实现
Jul 29 Python
python TK库简单应用(实时显示子进程输出)
Oct 29 Python
解决Pycharm中恢复被exclude的项目问题(pycharm source root)
Feb 14 Python
开启Django博客的RSS功能的实现方法
Feb 17 Python
Django 实现将图片转为Base64,然后使用json传输
Mar 27 Python
详解python变量与数据类型
Aug 25 Python
如何学习Python time模块
Jun 03 #Python
使用openCV去除文字中乱入的线条实例
Jun 02 #Python
Python能做什么
Jun 02 #Python
什么是Python中的匿名函数
Jun 02 #Python
学习python需要有编程基础吗
Jun 02 #Python
python中if及if-else如何使用
Jun 02 #Python
python3+openCV 获取图片中文本区域的最小外接矩形实例
Jun 02 #Python
You might like
php读取XML的常见方法实例总结
2017/04/25 PHP
php中pcntl_fork创建子进程的方法实例
2019/03/14 PHP
php实现的支付宝网页支付功能示例【基于TP5框架】
2019/09/16 PHP
静态的动态续篇之来点XML
2006/12/23 Javascript
JObj预览一个JS的框架
2008/03/13 Javascript
用JS做的简单的可折叠的两级树形菜单
2013/09/21 Javascript
jquery图片滚动放大代码分享(2)
2015/08/28 Javascript
javascript常用经典算法实例详解
2015/11/25 Javascript
如何高效率去掉js数组中的重复项
2016/04/12 Javascript
JS阻止事件冒泡行为和闭包的方法
2016/06/16 Javascript
vue.js根据代码运行环境选择baseurl的方法
2018/02/28 Javascript
微信小程序滑动选择器的实现代码
2018/08/10 Javascript
原生js实现下拉选项卡
2019/11/27 Javascript
vue实现表格合并功能
2020/12/01 Vue.js
[02:56]《DAC最前线》之国外战队抵达上海备战亚洲邀请赛
2015/01/28 DOTA
[06:53]2018DOTA2国际邀请赛寻真——为复仇而来的Newbee
2018/08/15 DOTA
[00:58]PWL开团时刻DAY5——十人开雾0换5
2020/11/04 DOTA
[05:09]DOTA2-DPC中国联赛2月22日Recap集锦
2021/03/11 DOTA
python之wxPython菜单使用详解
2014/09/28 Python
利用numpy+matplotlib绘图的基本操作教程
2017/05/03 Python
Python Xml文件添加字节属性的方法
2018/03/31 Python
详解利用python+opencv识别图片中的圆形(霍夫变换)
2019/07/01 Python
python logging日志模块原理及操作解析
2019/10/12 Python
简单了解Python3 bytes和str类型的区别和联系
2019/12/19 Python
常用的四种CSS透明属性介绍
2014/04/12 HTML / CSS
几个Shell Script面试题
2012/08/31 面试题
大四学年自我鉴定
2013/11/13 职场文书
高中语文课后反思
2014/04/27 职场文书
金融与证券专业求职信
2014/06/22 职场文书
企业爱岗敬业演讲稿
2014/09/04 职场文书
工作会议通知
2015/04/15 职场文书
小学五年级班主任工作经验交流材料
2015/11/02 职场文书
2016年六一儿童节开幕词
2016/03/04 职场文书
2016年学校党支部创先争优活动总结
2016/04/05 职场文书
MySQL大小写敏感的注意事项
2021/05/24 MySQL
python对文档中元素删除,替换操作
2022/04/02 Python