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 list转dict示例分享
Jan 28 Python
Python 列表(List) 的三种遍历方法实例 详解
Apr 15 Python
Python使用遗传算法解决最大流问题
Jan 29 Python
python的pygal模块绘制反正切函数图像方法
Jul 16 Python
python3发送邮件需要经过代理服务器的示例代码
Jul 25 Python
解决Django加载静态资源失败的问题
Jul 28 Python
python3.7环境下安装Anaconda的教程图解
Sep 10 Python
Java文件与类动手动脑实例详解
Nov 10 Python
Python序列化与反序列化pickle用法实例
Nov 11 Python
Python实现我的世界小游戏源代码
Mar 02 Python
python数字转对应中文的方法总结
Aug 02 Python
详解OpenCV曝光融合
Apr 29 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 和 MySQL 开发的 8 个技巧
2006/10/09 PHP
PHP 编写大型网站问题集
2010/05/07 PHP
PHP递归复制、移动目录的自定义函数分享
2014/11/18 PHP
crontab无法执行php的解决方法
2016/01/25 PHP
PHP巧妙利用位运算实现网站权限管理的方法
2017/03/12 PHP
ThinkPHP5框架实现简单的批量查询功能示例
2018/06/07 PHP
Laravel使用swoole实现websocket主动消息推送的方法介绍
2019/10/20 PHP
PHP 计算两个时间段之间交集的天数示例
2019/10/24 PHP
(JS实现)MapBar中坐标的加密和解密的脚本
2007/05/16 Javascript
javascript 操作select下拉列表框的一点小经验
2010/03/20 Javascript
alert中断settimeout计时功能
2013/07/26 Javascript
使用JavaScript实现Java的List功能(实例讲解)
2013/11/07 Javascript
jquery中获得元素尺寸和坐标的方法整理
2014/05/18 Javascript
判断iframe里的页面是否加载完成
2014/06/06 Javascript
js实现遮罩层弹出框的方法
2015/01/15 Javascript
js实现鼠标划过给div加透明度的方法
2015/05/25 Javascript
jQuery超简单选项卡完整实例
2015/09/26 Javascript
Bootstrap组合上、下拉框简单实现代码
2017/03/06 Javascript
Vue实现选择城市功能
2017/05/27 Javascript
javascript定时器取消定时器及优化方法
2017/07/08 Javascript
JS实现浏览上传文件的代码
2017/08/23 Javascript
springMvc 前端用json的方式向后台传递对象数组方法
2018/08/07 Javascript
js对象属性名驼峰式转下划线的实例代码
2020/09/17 Javascript
原生js实现简单轮播图
2020/10/26 Javascript
Express 配置HTML页面访问的实现
2020/11/01 Javascript
Python Socket编程之多线程聊天室
2018/07/28 Python
python实现简单加密解密机制
2019/03/19 Python
树莓派采用socket方式文件传输(python)
2019/06/22 Python
Flask缓存静态文件的具体方法
2020/08/02 Python
HTML5公共页面提取作为公用代码的方法
2020/06/30 HTML / CSS
澳大利亚Rockwear官网:女子瑜伽、健身和运动服
2021/01/26 全球购物
如何安装ruby on rails
2014/02/09 面试题
聘任书模板
2014/03/29 职场文书
住房公积金贷款工资证明
2015/06/12 职场文书
Java中的继承、多态以及封装
2022/04/11 Java/Android
MySql如何将查询的出来的字段进行转换
2022/06/14 MySQL