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进行数据科学工作的简单入门教程
Apr 01 Python
Python的设计模式编程入门指南
Apr 02 Python
对python中dict和json的区别详解
Dec 18 Python
使用python实现mqtt的发布和订阅
May 05 Python
Django 权限认证(根据不同的用户,设置不同的显示和访问权限)
Jul 24 Python
对django中foreignkey的简单使用详解
Jul 28 Python
Python socket 套接字实现通信详解
Aug 27 Python
浅谈python中统计计数的几种方法和Counter详解
Nov 07 Python
Python模块future用法原理详解
Jan 20 Python
基于Python fminunc 的替代方法
Feb 29 Python
Ubuntu 20.04安装Pycharm2020.2及锁定到任务栏的问题(小白级操作)
Oct 29 Python
Python自动化工具之实现Excel转Markdown表格
Apr 08 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+mysqli实现批量替换数据库表前缀的方法
2014/12/29 PHP
Joomla简单判断用户是否登录的方法
2016/05/04 PHP
原生JS实现Ajax通过GET方式与PHP进行交互操作示例
2018/05/12 PHP
php 与 nginx 的处理方式及nginx与php-fpm通信的两种方式
2018/09/28 PHP
PHP xpath()函数讲解
2019/02/11 PHP
Yii2.0框架实现带分页的多条件搜索功能示例
2019/02/20 PHP
laravel框架模型、视图与控制器简单操作示例
2019/10/10 PHP
javascript笔记 String类replace函数的一些事
2011/09/22 Javascript
Javascript Request获取请求参数如何实现
2012/11/28 Javascript
node.js中的fs.chmod方法使用说明
2014/12/18 Javascript
原生js和jQuery写的网页选项卡特效对比
2015/04/27 Javascript
JavaScript设置表单上传时文件个数的方法
2015/08/11 Javascript
微信小程序 首页制作简单实例
2017/04/07 Javascript
Angular CLI在Angular项目中如何使用scss详解
2018/04/10 Javascript
代码整洁之道(重构)
2018/10/25 Javascript
Vue+abp微信扫码登录的实现代码示例
2020/01/06 Javascript
[48:30]LGD vs infamous Supermajor小组赛D组 BO3 第一场 6.3
2018/06/04 DOTA
详解Python中DOM方法的动态性
2015/04/11 Python
CentOS下使用yum安装python-pip失败的完美解决方法
2017/08/16 Python
Python获取昨天、今天、明天开始、结束时间戳的方法
2018/06/01 Python
Linux下Pycharm、Anaconda环境配置及使用踩坑
2018/12/19 Python
解决安装pycharm后不能执行python脚本的问题
2019/01/19 Python
django与小程序实现登录验证功能的示例代码
2019/02/19 Python
Python3 log10()函数简单用法
2019/02/19 Python
详细分析Python collections工具库
2020/07/16 Python
Python列表推导式实现代码实例
2020/09/09 Python
python 装饰器重要在哪
2021/02/14 Python
windeln官方海外旗舰店:德淘超人气母婴超市
2017/12/15 全球购物
在对linux系统分区进行格式化时需要对磁盘簇(或i节点密度)的大小进行选择,请说明选择的原则
2012/01/13 面试题
秋季运动会活动方案
2014/02/05 职场文书
科级干部考察材料
2014/02/15 职场文书
停车场管理制度范本
2015/08/05 职场文书
详解TypeScript中的类型保护
2021/04/29 Javascript
安装配置mysql及Navicat prenium的详细流程
2021/06/10 MySQL
python析构函数用法及注意事项
2021/06/22 Python
Go 语言中 20 个占位符的整理
2021/10/16 Golang