关键词:
作者主页(文火冰糖的硅基工坊):https://blog.csdn.net/HiWangWenBing
本文网址:https://blog.csdn.net/HiWangWenBing/article/details/119459192
目录
第1章 Tensor运算概述
1.1 概述
PyTorch提供了大量的张量运算,基本上可以对标Numpy多维数组的运算,以支持对张量的各种复杂的运算。
这些操作运算中大多是对数组中每个元素执行相同的函数运算,并获得每个元素函数运算的结果序列,这些序列生成一个新的同维度的数组。
https://www.runoob.com/numpy/numpy-linear-algebra.html
1.2 运算分类
(1)算术运算:加、减、系数乘、系数除
(2)函数运算:sin,cos
(3)取整运算:上取整、下取整
(4)统计运算:最大值、最小值、均值
(5)比较运算:大于,等于,小于、排序
(6)线性代数运算:矩阵、点乘、叉乘
1.3 “in place“运算
“in place“运算不是某个特定的函数运算,而是每个函数都有自己的“in place“运算的版本。
xxx_():执行完该操作,直接修改tensor自身的值。
基本上,每个函数都有自己的in place版本。
如
torch.cos() =》torch.cos_()
torch.floor() =》torch.floor_()
1.4 Tensor的广播机制: 不同维度的张量运算
1.5 环境准备
import numpy as np
import torch
print("Hello World")
print(torch.__version__)
print(torch.cuda.is_available())
1.6 排序运算概述
(1) sort:排序
- 可以按照不同的张量维度进行排序,有dim指定。
- 可以按照升序或降序排序,有descending进行排序。
- out:存储输出结果的张量
(2)topk:获取前K个元素。
- k:要获取的元素的个数
- dim:指定dim方向,而不是全部元素
- largest:取最大元素还是最小元素
- sorted:向量是否已经排序,如果未排序,该函数先对张量进行排序。
- out:存储输出结果的张量
(3)kthvalue:获取第K个最小值
- k:指定待获取元素的序号
- dim:指定操作的张量维度方向
- out:存储输出结果的张量
第2章 代码示例:sort(排序)
# 排序sort
a = torch.Tensor([[5,4,1],[6,3,2]])
print ("源数据:")
print (a)
print ('\\n')
print("默认排序")
print(torch.sort(a))
print("\\ndim=1排序")
print(torch.sort(a,dim=1))
print("\\ndim=0排序")
print(torch.sort(a,dim=0))
print("\\n成员函数排序")
print(a.sort(dim=1, descending = True))
print ("\\n源数据:")
print(a)
#输出:
源数据:
tensor([[5., 4., 1.],
[6., 3., 2.]])
默认排序
torch.return_types.sort(
values=tensor([[1., 4., 5.],
[2., 3., 6.]]),
indices=tensor([[2, 1, 0],
[2, 1, 0]]))
dim=1排序
torch.return_types.sort(
values=tensor([[1., 4., 5.],
[2., 3., 6.]]),
indices=tensor([[2, 1, 0],
[2, 1, 0]]))
dim=0排序
torch.return_types.sort(
values=tensor([[5., 3., 1.],
[6., 4., 2.]]),
indices=tensor([[0, 1, 0],
[1, 0, 1]]))
成员函数排序
torch.return_types.sort(
values=tensor([[5., 4., 1.],
[6., 3., 2.]]),
indices=tensor([[0, 1, 2],
[0, 1, 2]]))
源数据:
tensor([[5., 4., 1.],
[6., 3., 2.]])
备注:
- 默认是按照dim = 1的方向进行排序
- 默认是按照升序排序
- 排序后,不影响源张量的数据
- 可以通过torch.sort排序,也可以通过张量的成员函数a.sort进行排序
- dim = 1:对每个行向量进行排序
- dim = 1:对每个列向量进行排序
第3章 代码示例:topk(获取前K个最值)
# topk
a = torch.Tensor([[2,4,6,12,8,10],[1,1,5,11,11,9]])
print ("源数据:")
print (a)
print ("\\n默认参数:")
print(torch.topk(a,2))
print ("\\n取K个最大值:")
b = torch.topk(a,k=2, largest=True)
print(b)
print ("\\n取K个最小值:")
torch.topk(a,k=2, largest=False, out=b)
print(b)
输出:
源数据:
tensor([[ 2., 4., 6., 12., 8., 10.],
[ 1., 1., 5., 11., 11., 9.]])
默认参数:
torch.return_types.topk(
values=tensor([[12., 10.],
[11., 11.]]),
indices=tensor([[3, 5],
[3, 4]]))
取K个最大值:
torch.return_types.topk(
values=tensor([[12., 10.],
[11., 11.]]),
indices=tensor([[3, 5],
[3, 4]]))
取K个最小值:
torch.return_types.topk(
values=tensor([[2., 4.],
[1., 1.]]),
indices=tensor([[0, 1],
[0, 1]]))
备注:
- 对于值相同的元素,依然参与排序,并不剔除值相同的元素。
- 默认是k个最大值
- 操作后,对源张量数据无影响
第4章 代码示例:kthvalue(取第K个最小值)
# kthvalue:取第K个排序后的元素
a = torch.Tensor([[2,4,6,12,8,0],[3,7,5,11,1,9]])
print ("源数据:")
print (a)
print ("\\n源数据排序后的值:")
print (torch.sort(a))
print ("\\n默认参数取第3个最小值::")
print(torch.kthvalue(a,3))
print ("\\n按dim=1的方向取第3个最小值:")
b = torch.kthvalue(a,k=3, dim=1)
print(b)
print ("\\n按dim=0的方向取第1个最小值:")
torch.kthvalue(a, k=1, dim=0, out=b)
print(b)
输出:
源数据:
tensor([[ 2., 4., 6., 12., 8., 0.],
[ 3., 7., 5., 11., 1., 9.]])
源数据排序后的值:
torch.return_types.sort(
values=tensor([[ 0., 2., 4., 6., 8., 12.],
[ 1., 3., 5., 7., 9., 11.]]),
indices=tensor([[5, 0, 1, 2, 4, 3],
[4, 0, 2, 1, 5, 3]]))
默认参数取第3个最小值::
torch.return_types.kthvalue(
values=tensor([4., 5.]),
indices=tensor([1, 2]))
按dim=1的方向取第3个最小值:
torch.return_types.kthvalue(
values=tensor([4., 5.]),
indices=tensor([1, 2]))
按dim=0的方向取第1个最小值:
torch.return_types.kthvalue(
values=tensor([ 2., 4., 5., 11., 1., 0.]),
indices=tensor([0, 0, 1, 1, 1, 0]))
输出:
源数据:
tensor([[ 2., 4., 6., 12., 8., 0.],
[ 3., 7., 5., 11., 1., 9.]])
源数据排序后的值:
torch.return_types.sort(
values=tensor([[ 0., 2., 4., 6., 8., 12.],
[ 1., 3., 5., 7., 9., 11.]]),
indices=tensor([[5, 0, 1, 2, 4, 3],
[4, 0, 2, 1, 5, 3]]))
默认参数取第3个最小值::
torch.return_types.kthvalue(
values=tensor([4., 5.]),
indices=tensor([1, 2]))
按dim=1的方向取第3个最小值:
torch.return_types.kthvalue(
values=tensor([4., 5.]),
indices=tensor([1, 2]))
按dim=0的方向取第1个最小值:
torch.return_types.kthvalue(
values=tensor([ 2., 4., 5., 11., 1., 0.]),
indices=tensor([0, 0, 1, 1, 1, 0]))
备注:
- 默认是按照dim = 1的方向,即从行向量的序列中进行比较。
- 在dim指定的方向的序列中,取第K个排序后的最小值。也就意味着该操作是对序列进行升序排列。
作者主页(文火冰糖的硅基工坊):https://blog.csdn.net/HiWangWenBing
本文网址:https://blog.csdn.net/HiWangWenBing/article/details/119459192
[pytroch系列-13]:pytorch基础-张量的操作-筛选过滤(代码片段)
作者主页(文火冰糖的硅基工坊):https://blog.csdn.net/HiWangWenBing本文网址:https://blog.csdn.net/HiWangWenBing/article/details/119465264目录第1章Tensor运算概述1.1概述1.3张量的操作与变换1.4 环境准备1.5 2.数据元素限制:clamp(inpu 查看详情
[pytroch系列-7]:pytorch基础-张量tensor的算术运算(代码片段)
作者主页(文火冰糖的硅基工坊):https://blog.csdn.net/HiWangWenBing本文网址:https://blog.csdn.net/HiWangWenBing/article/details/119428023目录 第1章 Tensor运算概述1.1概述1.3 “inplace“运算 1.4 Tensor的广播机制:不同维度的tensor实例运算 查看详情
[pytroch系列-5]:pytorch基础-稀疏矩阵与其创建方法(代码片段)
作者主页(文火冰糖的硅基工坊):https://blog.csdn.net/HiWangWenBing本文网址:https://blog.csdn.net/HiWangWenBing/article/details/119423982目录第1部分稀疏矩阵概述1.1概述1.2 COO矩阵的原理第2部分稀疏矩阵创建的代码示例2.1环境准备2.2 COO矩... 查看详情
[pytroch系列-17]:pytorch基础-张量的索引与切片(代码片段)
作者主页(文火冰糖的硅基工坊):https://blog.csdn.net/HiWangWenBing本文网址:https://blog.csdn.net/HiWangWenBing/article/details/119678906目录第1章张量的索引与切片1.1张量的维度方向1.2张量元素的访问:下标1.3.张量元素的下标切片1.4... 查看详情
[pytroch系列-4]:pytorch基础-张量(tensor)的创建方法(代码片段)
作者主页(文火冰糖的硅基工坊):https://blog.csdn.net/HiWangWenBing本文网址:https://blog.csdn.net/HiWangWenBing/article/details/119424611目录第1部分 前置条件1.1导入库及检查版本1.2HelloWorld第2部分创建普通Tensor实例的代码示例2.1通过函数... 查看详情
[pytroch系列-15]:pytorch基础-张量的操作-拆分与分割(代码片段)
作者主页(文火冰糖的硅基工坊):https://blog.csdn.net/HiWangWenBing本文网址:https://blog.csdn.net/HiWangWenBing/article/details/119489896目录 第1章Tensor运算概述1.1概述1.3张量的操作与变换1.4 环境准备1.5 张量的操作-拆分与分割第2章 平... 查看详情
[pytroch系列-14]:pytorch基础-张量的操作-拼接与堆叠(代码片段)
作者主页(文火冰糖的硅基工坊):https://blog.csdn.net/HiWangWenBing本文网址:https://blog.csdn.net/HiWangWenBing/article/details/119481948目录第1章Tensor运算概述1.1概述1.3张量的操作与变换1.4 环境准备1.5 张量的操作-拼接与堆叠第2章增加... 查看详情
[pytroch系列-9]:pytorch基础-张量tensor元素的统计运算(代码片段)
作者主页(文火冰糖的硅基工坊):https://blog.csdn.net/HiWangWenBing本文网址:https://blog.csdn.net/HiWangWenBing/article/details/119443802目录第1章Tensor运算概述1.1概述1.3 “inplace“运算 1.4 Tensor的广播机制:不同维度的tensor实例运算1 查看详情
[pytroch系列-8]:pytorch基础-张量tensor的取整运算(代码片段)
作者主页(文火冰糖的硅基工坊):https://blog.csdn.net/HiWangWenBing本文网址:https://blog.csdn.net/HiWangWenBing/article/details/119429253目录 第1章Tensor运算概述1.1概述1.3 “inplace“运算 1.4 Tensor的广播机制:不同维度的tensor实例运算1 查看详情
[pytroch系列-10]:pytorch基础-张量tensor元素的比较运算(代码片段)
作者主页(文火冰糖的硅基工坊):https://blog.csdn.net/HiWangWenBing本文网址:https://blog.csdn.net/HiWangWenBing/article/details/119456242目录第1章Tensor运算概述1.1概述1.3 “inplace“运算 1.4 Tensor的广播机制:不同维度的tensor实例运算1. 查看详情
[pytroch系列-12]:pytorch基础-张量tensor线性运算(点乘叉乘)(代码片段)
作者主页(文火冰糖的硅基工坊):https://blog.csdn.net/HiWangWenBing本文网址:https://blog.csdn.net/HiWangWenBing/article/details/119463478目录 第1章Tensor运算概述1.1概述1.3 “inplace“运算 1.4 Tensor的广播机制:不同维度的张量运算1.5环境准... 查看详情
[pytroch系列-6]:pytorch基础-张量tensor的三角函数运算(代码片段)
作者主页(文火冰糖的硅基工坊):https://blog.csdn.net/HiWangWenBing本文网址:https://blog.csdn.net/HiWangWenBing/article/details/119384608目录第1部分:Tensor运算概述1.1概述1.3 “inplace“运算 1.4 Tensor的广播机制:不同维度的ten 查看详情
[pytroch系列-3]:pytorch基础-helloworld程序与张量(tensor)概述(代码片段)
作者主页(文火冰糖的硅基工坊):https://blog.csdn.net/HiWangWenBing本文网址:https://blog.csdn.net/HiWangWenBing/article/details/119378227目录1.导入库及检查版本2.HelloWorld3.基本数据单元3.1 torch支持的数据结构3.2 数据的类型:dtyp 查看详情
pytorch基础的基本概念(代码片段)
1.什么是Pytorch,为什么选择Pytroch?2.Pytroch的安装3.配置Python环境4.准备Python管理器5.通过命令行安装PyTorch6.PyTorch基础概念GPU云服务器默认提供了pytorch的环境,7.通用代码实现流程(实现一个深度学习的代码流程)importtorchimporttorch.nnasn... 查看详情
[pytroch系列-2]:facebookpytroch简介生态环境开发架构软件架构
作者主页(文火冰糖的硅基工坊):https://blog.csdn.net/HiWangWenBing本文网址:https://blog.csdn.net/HiWangWenBing/article/details/119361338第1章什么是PyTroch?PyTorch由Facebook人工智能研究院(FAIR)基于Tor 查看详情
[pytorch系列-23]:pytorch基础-其他
。。。。。。。 查看详情
[pytroch系列-1]:pytroch深度学习框架的详细安装过程(代码片段)
作者主页(文火冰糖的硅基工坊):https://blog.csdn.net/HiWangWenBing本文网址:https://blog.csdn.net/HiWangWenBing/article/details/119160541目录1.PyTroch概述2.PyTroch深度学习框架的详细安装过程2.1登录到PyTroch官网2.2不带GPU硬件平台的PyTroc 查看详情
[pytorch系列-18]:pytorch基础-张量的范数(代码片段)
作者主页(文火冰糖的硅基工坊):https://blog.csdn.net/HiWangWenBing本文网址:https://blog.csdn.net/HiWangWenBing/article/details/119707901目录第1章什么是范数1.1常见的范数与定义1.2代码演示的前置条件1.3范数的函数说明:torch.norm(input,p 查看详情