DeepLizard | PyTorch 神经网络编程系列

置顶一位大佬的学习笔记

https://www.zhihu.com/people/ji-jie-32-12/posts

学习提纲

Part 1·Section 1

Part 1· Section 2

0维张量 1维张量 2维张量
number(数) array(数组) 2d-array(二维数组)
scalar(标量) vector(向量) matrix(矩阵)

tensor(张量)对应计算机的术语就是 nd-array(n维数组)

张量的三个属性——rank、axes、shape

(1)rank :张量的维度数量(阶数)

(2)Axis :某一维度的长度,也就是这一维度中的元素数量。 比如一个3x4的矩阵,rank为2,第一个维度的axis为3,第二个维度的axis为4。

(3)shape: 各个维度都有多少个元素。3*4就是这个矩阵(二阶张量)的shape

张量的秩:一个张量有多少个轴

张量的形状由每个轴长度决定

import torch
dd=[
    [1,2,3],
    [4,5,6],
    [7,8,9]
]
t=torch.tensor(dd)
type (t)
t.shape
t.reshape(1,9)

[batch,channel,height,width]

特征图:输入颜色通道和卷积滤波器所产生的卷积的结果

将颜色通道和卷积滤波器做一个卷积运算得到一个输出通道结果 成为特征映射

t.dtype #torch.float32 数据类型
t.device #cpu 数据被分配的位置 决定给定张量计算的位置
t.layout #torch.strided 张量数据如何在内存中布局

张量之间的张量运算必须与相同数据类型的张量运算

device=torch.device('cuda:0')

张量之间的计算依赖于类型和设备

创建张量

data=np.array([1,2,3])
torch.Tensor(data) #类构造函数 在内存中创建额外数据副本
torch.tensor(data) #常用 工厂函数 接收参数输入并返回特定类型对象的函数 在内存中创建额外数据副本 
torch.as_tensor(data) # 在内存中共享数据
torch.from_numpy(data) #在内存中共享数据

特殊矩阵

torch.eye(2) #单位矩阵 指定行数
torch.zeros(2,2)#零矩阵 指定每个轴长度
torch.ones(2,2)#全1张量
torch.rand(2,2)#随机张量

张量操作类型

重塑操作、元素操作、还原操作、访问操作

t.size() #张量的形状 [3,4]
t.shape  #张量的形状 [3,4]
len(t.shape) #张量的秩 2 
#张量中包含的元素个数 各分量值乘积
#把这个形状转换成一个张量,然后使用.prod看到这个张量包含几个分量
torch.tensor(t.shape).prod()
t.numel()#元素数量12

重塑: 只改变数据形状 压缩、解缩

posted @   Lu西西  阅读(71)  评论(0编辑  收藏  举报
相关博文:
点击右上角即可分享
微信分享提示