深度学习基础,汇总参考链接

1、张量的基本操作 

张量默认创建int64(长整型)类型,整数型的数组默认创建int32(整型)类型,即先用np创建数组,再转换为tensor格式,数据类型即为int32类型。

张量类型可以指定

eg:
torch.tensor([1.1, 2.7], dtype = torch.int16)  # 创建int16整型张量

tensor中列表几层就是几维。

flatten拉平:将任意维度张量转化为一维张量。

张量索引出来的结果还是零维张量,而不是单独的数,要转换为单独的数,需要使用item()方法。

张量的合并操作:

拼接函数:cat

a = torch.zeros(2,3)
b = torch.ones(2,3)

torch.cat([a,b])

tensor([[0., 0., 0.],
        [0., 0., 0.],
        [1., 1., 1.],
        [1., 1., 1.]])

堆叠函数:stack

和拼接不同,stack是将各堆叠对象封装到一个更高维度的张量里,参与堆叠的张量必须形状完全相同。

a = tensor([[0., 0., 0.],
            [0., 0., 0.]])
b = tensor([[1., 1., 1.],
            [1., 1., 1.]])
c = torch.stack([a, b])                 # 堆叠之后,生成一个三维张量
c = tensor([[[0., 0., 0.],
             [0., 0., 0.]],

            [[1., 1., 1.],
             [1., 1., 1.]]])



张量维度变换:降维用squeeze,升维用unsqueeze

.squeeze()只能从数组的形状中删除单维度条目,即把shape中为1的维度去掉,多个维度1可以一次删除完。

torch的广播机制是将较小的数组“广播”至较大的数组,需要满足以下前提条件:

1-每个张量至少有一个维度

2-迭代维度尺寸时,从尾部的维度开始,维度尺寸需满足:相等/至少其中一个数组的某一维度为1/其中一个数组不存在该维度。

import torch

# 示例1:相同形状的张量总是可广播的,因为总能满足以上规则。
x = torch.empty(5, 7, 3)
y = torch.empty(5, 7, 3)


# 示例2:不可广播( a 不满足第一条规则)。
a = torch.empty((0,))
b = torch.empty(2, 2)


# 示例3:m 和 n 可广播:
m = torch.empty(5, 3, 4, 1)
n = torch.empty(   3, 1, 1)
# 倒数第一个维度:两者的尺寸均为1
# 倒数第二个维度:n尺寸为1
# 倒数第三个维度:两者尺寸相同
# 倒数第四个维度:n该维度不存在


# 示例4:不可广播,因为倒数第三个维度:2 != 3
p = torch.empty(5, 2, 4, 1)
q = torch.empty(   3, 1, 1)

排序运算:sort

升序   torch.sort()

降序,参数赋值

torch.sort(t,descending=True)

参考链接:

深度学习基础:1.张量的基本操作_张量 8*8*1 转换为1*8*8-CSDN博客

torch的广播机制(broadcast mechanism) - 知乎 (zhihu.com)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值