Pytorch基本操作
本文只是学习做的笔记,不喜忽喷。
Pytorch的安装
安装地址介绍:https://pytorch.org/
带GPU的安装:
conda install pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch
不带GPU的安装
conda install pytorch torchvision torchaudio cpuonly -c pytorch
安装之后在ipython中验证
import torch
torch.__version__
注意:安装模块的时候使用的是pytorch,在代码中使用的是torch。
pytorch的使用
1、张量Tensor
各种数值数据都可以称为张量。
- 常数:scaler:0阶张量
- 向量:vector:1阶张量
- 矩阵:matrix:2阶张量
- 3阶张量…n阶张量
2、张量的创建方法
- 使用python中的列表或者序列创建tensor
torch.tensor([1,2,3])
- 使用numpy中的数组创建tensor
torch.tensor(np.array([[1,2,3],[4,5,6]]))
- 使用torch中的api创建tensor
# 创建3行4列的空的tensor
torch.empty([3,4])
# 创建3行4列的全为0的tensor
torch.zeros([3,4])
# 创建3行4列的全为1的tensor
torch.ones([3,4])
# 创建3行4列的随机值的tensor,随机值的区间为[0,1)
torch.rand([3,4])
# 创建3行4列的随机整数的tensor,随机区间为[lower,high)
torch.randint(low = 0,high = 10,size = [3,4])
# 创建3行4列的随机整数的tensor,随机值的分布均值为0,方差为1
torch.randn([3,4])
3、pytorch中tensor的常用方法
- 获取tensor中的数据(当tensor中只有一个元素可用时):tensor.item()
t1 = torch.tensor(np.array(1))
t1.item()
- 转化为numpy数组
t2 = torch.tensor(np.array([[1,2,3],[4,5,6]]))
t2.numpy()
- 获取形状:tensor.size()
# size既可以获取整个tensor的形状,也可以获取某一维度的形状
t2.size()
t2.size(3)# 2为下标
# shape值可以获取整个tensor的形状
t2.shape
- 形状改变:tensor.view((3,4)),类似numpy 中的reshape,是一种浅拷贝,仅仅是形状发生改变,不会改变原来结果的值,会返回一个结果。
- 获取维数:tensor.dim()
- 获取最大/小值:tensor.max()、tensor.min()
- 转置:tensor.transpose()
transpose在转置是对二维数组可以直接进行转置,对于三维数组需要写清楚哪一列。
二维的时候tensor.transpose()可以换成tensor.t()
t3 = torch.tensor(np.arange(24).reshape(2,3,4))
# 结果为:tensor([[[ 0, 1, 2, 3],
# [ 4, 5, 6, 7],
# [ 8, 9, 10, 11]],
#
# [[12, 13, 14, 15],
# [16, 17, 18, 19],
# [20, 21, 22, 23]]], dtype=torch.int32)
t3.size()
torch.Size([2, 3, 4])
t3.transpose(0,1)# 对第0维和第1维进行转置
# permute将tensor的维度换位
t3.permute(2,1,0)# 交换0维和2维数据
- tensor[1,3]获取tensor中第一行第三列的值
- tensor[1,3]=5 是对tensor第一行第三列的位置进行赋值5
4、数据类型
tensor中的数据类型非常多,常见的如下:
具体可以看pytorch的官方文档
- 获取tensor的数据类型:tensor.dtype
- 创建数据的时候指定类型
torch.ones([2,3],dtype=torch.float32)
torch.tensor([2,3],dtype=torch.float32)# 此处必须是小写的tensor,后面的dtype可以指定数据类型
torch.LongTensor()
torch.FloatTensor()
- 类型的修改
tensor.float()/long()/int()
5、tensor的其他操作
- tensor的加法
x = torch.ones(5,3,dtype=torch.float)
y = torch.rand(5,3)
# 第一种相加
x+y
# 第二种相加
torch.add(x,y)
# 第三种相加
x.add(y)
# 带下划线的方法会对x进行就地修改
x.add_(y)
# tensor和数字进行操作
x+10
- CUDA中的tensor
torch.cuda这个模块增加了CUDA tensor的支持,能够在cpu和gpu上使用相同的方法操作tensor。
通过.to
方法能够把一个tensor转移到另外一个设备(比如从CPU转到GPU)
# 判断电脑是否支持GPU
torch.cuda.is_available()
# 判断GPU是否可用,如果可用的话就使用GPU,否则使用CPU的tensor
# cuda:0中的数字0指的是在电脑中有多个GPU时选择使用哪一个
# 下面是实例化一个device
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
# 下面可以使用.to进行转换,通过实例化一个CPU的device或者GPU的device,然后进行转换
a = torch.zeros([2,3])
a.to(device)
Pytorch基本操作相关推荐
- Pytorch基本操作(5)——torchvision中的Dataset以及Dataloader
简介 在学习李沐在B站发布的<动手学深度学习>PyTorch版本教学视频中发现在操作使用PyTorch方面有许多地方看不懂,往往只是"动手"了,没有动脑.所以打算趁着寒 ...
- [基本功]pytorch基本操作教程
文章目录 数据加载 Dataset Dataloader 可视化--TensorBoard Transform ToTensor Nomalize Resize RandomCrop torch.nn ...
- 深度学习实验1:pytorch实践与前馈神经网络
深度学习实验1:pytorch实践与前馈神经网络 1.pytorch基本操作 1.使用
- 深度学习课件-实验1_PyTorch基本操作实验
文章目录 一.Pytorch基本操作考察 1.1 1.2 1.3 二.动手实现 logistic 回归 2.1 2.2 三.动手实现softmax回归 3.1 3.2 一.Pytorch基本操作考察 ...
- 人工智能技术进阶路线
人工智能初阶 数学基础 微积分 线性代数 朴素概率论 朴素统计学理论 朴素优化理论 编程基础 Python基础语法 Pandas基础操作 SQL基本操作 Spark基本操作 PyTorch基本操作 T ...
- 【英文文本分类实战】之一——实战项目总览
[1] 总览 [英文文本分类实战]系列共六篇文章: [英文文本分类实战]之一--实战项目总览 [英文文本分类实战]之二--数据集挑选与划分 [英文文本分类实战]之三--数据清洗 [ ...
- 机器学习管道模型_使用连续机器学习来运行您的ml管道
机器学习管道模型 Vaithy NarayananVaithy Narayanan Follow跟随 Jul 15 7月15 使用连续机器学习来运行ML管道 (Using Continuous Mac ...
- 手动以及使用torch.nn实现logistic回归和softmax回归
其他文章 手动以及使用torch.nn实现logistic回归和softmax回(当前文章) 手动以及使用torch.nn实现前馈神经网络实验 文章目录 任务 一.Pytorch基本操作考察 1.1 ...
- pytorch方法,Tensor及其基本操作_重点
由于之前的草稿都没了,现在只有重写-. 我好痛苦 本章只是对pytorch的常规操作进行一个总结,大家看过有脑子里有印象就好,知道有这么个东西,需要的时候可以再去详细的看,另外也还是需要在实战中多运用 ...
- PyTorch | (3)Tensor及其基本操作
PyTorch | (1)初识PyTorch PyTorch | (2)PyTorch 入门-张量 PyTorch | (3)Tensor及其基本操作 Tensor attributes: 在tens ...
最新文章
- modlesim使用
- ftrace跟踪内核_ftrace、kpatch、systemtap的基本原理、联系和区别
- VC++动态链接库编程之MFC DLL
- vue“路由懒加载” 技术,让网页快速加载 (优化篇)
- oracle truncsysdate_oracle trunc截断日期函数
- DISPLAY变量和xhost(原创)
- Kanban VS Scrum:哪个是最好的敏捷项目管理框架
- Linux 命令(138)—— nc 命令
- Java 技术是什么?
- 基于OMCS的远程桌面实现远程控制地面站
- 实现DEDE转跳属性文档在模板上调用出转跳地址
- MyEclipse中用Maven创建Web项目(亲测有效)
- java歌词解析器_Java LRC 歌词解析
- c++实现压缩解压 zip文件
- 【股票】股票是什么?什么情况下股票会涨?
- Mysql5.1大表分区效率测试
- 华人泰斗黄煦涛逝世,贤伉俪深情六十载
- 大一新生必看,自学必看,里昂详解数据结构之链表
- Buying Hay 购买干草 完全背包
- Android 之BlockingQueue
热门文章
- APP_FIELD设置Item运行时行为
- 第二代支付系统专题之报文篇(二)大额支付报文完整版(含二代新增功能业务说明)...
- MOSS总弹出登陆框的问题
- Rational Rose和UML可视化建模基础
- 三言两语说清“线性流程”
- 在vue中使用axios发送post请求,参数方式
- eclipse里maven install时,报错提示jdk为无效的目标版本:1.7
- HTML学习笔记(七)
- cocos2d-x 3.2 DrawNode 绘图API
- 收集WebDriver的执行命令和参数信息