IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> PyTorch基础操作 -> 正文阅读

[人工智能]PyTorch基础操作

创建Tensor

Import from numpy

torch.from_numpy(a)

Import from List

torch.tensor() 中仅可以给出具体的数值,也就是tensor中的数值

但是 torch.FloatTensor() 中既可以给具体的数值(通过List方式给出),也可以不加 [] 而给出tensor的“dim”,比如torch.FloatTensor(3, 4),使用时最好使用后者,以便与torch.tensor()方法区分开

uninitialized? 未初始化方法(并未指定tensor中的数值,采用随机的方式给定,一般是以0为中心的数值,可能会非常大或者非常小)

torch.empty()

torch.FloatTensor(d1, d2, d3)

torch.IntTensor(d1, d2, d3)

set default type

rand/rand_like, randint

[0, 1]?

[min, max)

*_like

torch.rand(3, 3) 意思是做出一个3*3的tensor,而且这里的每个元素要在0~1之间平均分布,这就是初始化了的方法?

torch.rand_like(a) 意思是做出一个和a这个tensor一样维度的tensor(元素分布规则用rand方法)

可以类比到torch.*_like(a) 的范围

torch.randint(1, 10, [3, 3]) 意思是做一个3*3的tensor,其中的元素分布是从1-9的整数

randn

N(0, 1)

N(u, std)

torch.randn(3, 3) 做出一个3*3的tensor,且其中的元素服从N(0, 1)正态分布?

full

torch.full([2, 3], 7) 意思是做一个2*3的tensor,元素都是7;空列表[]表示做一个标量是7的tensor

arange/range

linspace/logspace

?

torch.linspace(0, 10, step=4) 表示做一个一维的tensor,元素总共4个,从0到10的等差数列

torch.logspace(0, -1, step=10) 表示做一个一维的tensor,元素总共10个,从10^0到10^-1的等比数列?

Ones/zeros/eye

?

randperm

random.shuffle

?

索引与切片

Indexing

dim 0 first

select first/last N

?

select by steps

?

select by specific index

?

select by mask

.masked_select()

?

elect by flatten index

?

维度变换

Operation

  • view/reshape
  • squeeze/unsqueeze
  • transpose/t/permute
  • expand/repeat

view reshape

Lost dim information

flexible but prone to corrupt (灵活但容易坏掉)

unsqueeze

[-a.dim()-1, a.dim()+1)

[-5, 5)

a.unsqueeze(idx) 中的 idx 若为正,则在idx 的前面增加一个维度1,若idx为负,则从后往前数的idx处的后面增加一个1维度?

?

举个例子

?

squeeze

?

b.squeeze() 就是把b中所有维度是1的通道给删除,保留不是1维度的通道?

加idx 索引就是把指定索引idx处的1通道删除,且必须是1维度的才能删

expand / repeat

expand: broadcasting

repeat: memory copied

expand

repeat

memory touched?

注意expand和repeat方法之间的区别:

expand中传入目标维度,其结果就是目标维度,但是repeat中传入复制多少次的次数,也就是说,原tensor乘这个参数得到最终tensor的维度数;而且repeat方法是真正复制了数据的方法,因此并不推荐,expand更好一些,它相当于是一个扩展,broadcasting的效果?

.t

.t 方法只能用于2维tensor,因此并不推荐?

transpose

a.transpose(1, 3) 直接输入需要交换位置的两个维度,1和3表示index,较为推荐?

?permute

Broadcast 自动扩展

Broadcasting

  • expand
  • without copying data

Key idea

  • insert 1 dim ahead
  • Expand dims with size 1 to same size
  • Feature maps: [4, 32, 14, 14]
  • Bias: [32, 1, 1] => [1, 32, 1, 1] => [4, 32, 14, 14]

?

??

?

?

?

?

?

拼接与拆分

merge or split

  • cat
  • stack
  • split
  • chunk

cat

statistics about scores

  • [class1-4, students, scores]
  • [class5-9, students, scores]

Along distinct dim/axis

dim = d

?

举个例子

?

stack

create new dim?

cat v.s. stack

split: by len

chunk: by num

?

基本运算

Math operation

  • add/minus/multiply/divide
  • matmul
  • pow
  • sqrt/rsqrt
  • round

bisic

其实加减乘除直接用符号表示即可,当然了,torch中也给出了相应的方法,简写的torch.add(), torch.sub(), torch.mul(), torch.div()??

matmul(矩阵乘法)

  • torch.mm
    • only for 2d
  • torch.matmul
  • @

举个例子

>2d tensor matmul?

?

power

?

exp log

?

approximation

  • .florr()? .ceil()
  • .round()
  • .trunc()? .frac()

?

clamp

  • gradient clipping
  • (min)
  • (min, max)

统计属性

statistics

  • norm
  • mean sum
  • prod
  • max, min, argmin, argmax
  • kthvalue, topk

norm

  • v.s. normalize , e.g. batch_norm
    • 这俩是不同的东西,norm表示范数计算,norm1是1-范数
    • normalize和norm不一样
  • matrix norm v.s. vector norm

vector vs matrix

norm-p

?

mean, sum, min, max, prod

?

argmin, argmax

?

?

dim, keepdim

?

top-k or k-th

  • .topk
    • largest
  • kthvalue

?

compare

  • <, <=, >, >=, !=, ==
  • torch.eq(a, b)
    • torch.equal(a, b)

?

高阶OP

Tensor advanced operation

  • where
  • gather

where

torch.where(condition, x, y) => Tensor

return a tensor of elements selected from either x or y, depanding on condition.

The operation is defined as:

举个例子

gather

torch.gather(input, dim, index, out=None) => Tensor

Gather values along an axis specified by dim.

For a 3-D tensor the output is specified by:

retrieve global label

  • argmax(pred) to get relative labeling
  • On some condition, our label is distinct from relative labeling

retrieve label

?

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-09-14 13:20:36  更:2021-09-14 13:21:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 14:39:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码