Pytorch深度学习笔记(04)--Numpy与Tensor

目录

一、Tensor概述

二、创建Tensor

1、表1 常见的新建tensor方法

2、创建张量的方法

3、torch.Tensor与torch.tensor的几点区别

三、修改Tensor形状

表2 tensor常用修改形状的函数

 四、索引操作

表3 常用选择操作函数

五、广播机制

六、逐元素操作

表4 常见逐元素操作

七、归并操作

表5 常见的归并操作

八、比较操作

表6 常用的比较函数

 九、矩阵操作

 表7 常用矩阵函数

十、Pytorch与Numpy比较

表8 Pytorch与Numpy函数对照表


一、Tensor概述

1、对tensor的操作很多,从接口的角度来划分,可以分为两类:
(1)torch.function,如torch.sum、torch.add等,
(2)tensor.function,如tensor.view、tensor.add等。

2、如果从修改方式的角度,可以分为以下两类:
(1)不修改自身数据,如x.add(y),x的数据不变,返回一个新的tensor。
(2)修改自身数据,如x.add_(y)(运行符带下划线后缀),运算结果存在x中,x被修改。

import torch
 
x=torch.tensor([1,2])
y=torch.tensor([3,4])
z=x.add(y)
print(z)
print(x)
x.add_(y)
print(x)

运行结果
tensor([4, 6])
tensor([1, 2])
tensor([4, 6])

二、创建Tensor

1、表1 常见的新建tensor方法

Pytorch深度学习笔记(04)--Numpy与Tensor_第1张图片

补充:

torch.full([2,4],2)      #根据形状[2,4],填充指定数值2

2、创建张量的方法

Tensor(序列)         #其中序列可以是列表、元组、array(数组)

3、torch.Tensor与torch.tensor的几点区别

①torch.Tensor是torch.empty和torch.tensor之间的一种混合,但是,当传入数据时,torch.Tensor使用全局默认dtype(FloatTensor),torch.tensor从数据中推断数据类型。
②torch.tensor(1)返回一个固定值1,而torch.Tensor(1)返回一个大小为1的张量,它是随机初始化的值。

三、修改Tensor形状

表2 tensor常用修改形状的函数

Pytorch深度学习笔记(04)--Numpy与Tensor_第2张图片

 四、索引操作

表3 常用选择操作函数

Pytorch深度学习笔记(04)--Numpy与Tensor_第3张图片

五、广播机制

 

import torch
import numpy as np

A = np.arange(0, 40,10).reshape(4, 1)
B = np.arange(0, 3)
#把ndarray转换为Tensor
A1=torch.from_numpy(A)  #形状为4x1
B1=torch.from_numpy(B)  #形状为3
#Tensor自动实现广播
C=A1+B1
#我们可以根据广播机制,手工进行配置
#根据规则1,B1需要向A1看齐,把B变为(1,3)
B2=B1.unsqueeze(0)  #B2的形状为1x3
#使用expand函数重复数组,分别的4x3的矩阵
A2=A1.expand(4,3)
B3=B2.expand(4,3)
#然后进行相加,C1与C结果一致
C1=A2+B3

六、逐元素操作

表4 常见逐元素操作

Pytorch深度学习笔记(04)--Numpy与Tensor_第4张图片

 【说明】

这些操作均创建新的tensor,如果需要就地操作,可以使用这些方法的下划线版本,例如abs_。

七、归并操作

表5 常见的归并操作

Pytorch深度学习笔记(04)--Numpy与Tensor_第5张图片

 【说明】
归并操作一般涉及一个dim参数,指定沿哪个维进行归并。另一个参数是keepdim,说明输出结果中是否保留维度1,缺省情况是False,即不保留。

八、比较操作

表6 常用的比较函数

Pytorch深度学习笔记(04)--Numpy与Tensor_第6张图片

 九、矩阵操作

 表7 常用矩阵函数

Pytorch深度学习笔记(04)--Numpy与Tensor_第7张图片

 【说明】
①torch的dot与Numpy的dot有点不同,torch中dot对两个为1D张量进行点积运算,Numpy中的dot无此限制。
②mm是对2D的矩阵进行点积,bmm对含batch的3D进行点积运算。
③转置运算会导致存储空间不连续,需要调用contiguous方法转为连续。

十、Pytorch与Numpy比较

表8 Pytorch与Numpy函数对照表

Pytorch深度学习笔记(04)--Numpy与Tensor_第8张图片

 

你可能感兴趣的:(pytorch,深度学习,python)