深度学习中的python语法笔记总结

torch.stack((a,b),dim=n)

把tensor按垂直方向堆起来

h1=torch.tensor([1, 1, 1, 1])
h2=torch.tensor([2, 2, 2, 2])
result = torch.stack((h1,h2),dim=0)
result,result.shape
(tensor([[1, 1, 1, 1],
         [2, 2, 2, 2]]),
 torch.Size([2, 4]))

把tesnsor按水平方向堆起来

h1=torch.tensor([1, 1, 1, 1])
h2=torch.tensor([2, 2, 2, 2])
result = torch.stack((h1,h2),dim=1)
result,result.shape
(tensor([[1, 2],
         [1, 2],
         [1, 2],
         [1, 2]]),
 torch.Size([4, 2]))

设置tensor打印小数点几位

torch.set_printoptions(2) # 让pytorch打印张量时,只打印到小数点后两位

将列表转为tensor

import torch
values = [65.94,65.91,66.2,65.8,65.72]
values = torch.Tensor(values)

获取列表中的最大值

values = [65.94,65.91,66.2,65.8,65.72]
max_value = max(values)

解释 torch中的 .clamp(min=0)

在PyTorch中,torch.clamp将张量中的元素限制在指定的范围内。
torch.clamp(min=0)会将张量中的每个元素与0进行比较,并将小于0的元素替换为0。其他大于等于0的元素则保持不变。

clamp函数原理

def clamp(x, lower, upper):
    if x < lower:
        return lower
    elif x > upper:
        return upper
    else:
        return x

torch.full()

torch.full()是PyTorch库中的一个函数,用于创建一个指定形状的张量,并填充指定的值。

函数的语法如下:

torch.full(size, fill_value, dtype=None, device=None, requires_grad=False)

参数说明:

size: 表示要创建的张量的形状,可以是一个整数,也可以是一个元组或列表形式的多个整数。
fill_value: 要填充到张量中的值,可以是任意标量值(如整数、浮点数等)。
dtype: 指定所创建张量的数据类型,默认为None,即使用默认的数据类型。
device: 指定所创建张量所在的设备,默认为None,表示使用当前设备。
requires_grad: 指定是否需要对张量进行自动求导,默认为False,即不进行自动求导。

import torch

# 创建一个形状为(3, 2)的张量,并填充为0.5
x = torch.full((3, 2), 0.5)
print(x)
# 输出结果:
# tensor([[0.5000, 0.5000],
#         [0.5000, 0.5000],
#         [0.5000, 0.5000]])

torch.nonzero()

torch.nonzero()是PyTorch中的一个函数,用于返回张量中非零元素的索引。它的语法是:

torch.nonzero(input, *, out=None)

参数说明:

input:要检查的张量。
out(可选):输出张量,用于存储结果。
返回值是一个包含所有非零元素的索引的张量。每一行表示一个非零元素的索引,每一列表示一个维度的索引。

下面是一个简单的示例:
import torch

# 创建一个张量
a = torch.tensor([[0, 1, 0],
                  [2, 0, 3]])

# 使用torch.nonzero()找到非零元素的索引
indices = torch.nonzero(a)

print(indices)
输出结果为:

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

unsqueeze(dim=0) 和 squeeze(0)

unsqueeze(dim=0)

用于在指定维度上给张量添加额外的维度。

在这里,假设anchors是一个PyTorch张量。unsqueeze函数用于扩展张量的维度。dim=0参数指定了要添加额外维度的位置。

例如,如果anchors是一个形状为(N,)的张量,其中N表示张量中的元素个数,那么anchors.unsqueeze(dim=0)将返回一个形状为(1, N)的张量,其中在索引0处添加了额外的维度。

squeeze(0)

是在PyTorch中的一种方法调用,用于去除张量中尺寸为1的维度。

假设anchors是一个PyTorch张量。squeeze函数可以用来去除张量中尺寸为1的维度。参数dim=0指定了要去除的维度位置。

例如,如果anchors是一个形状为(1, N)的张量,其中第一个维度的大小是1,那么anchors.squeeze(0)将返回一个形状为(N,)的张量,去除了原始张量中的第一个维度。

lambda匿名函数

它可以用于简洁地定义一个单行的函数

add = lambda x, y: x + y
print(add(2, 3))  # 输出结果为 5

torch.max(boxes1[:, None, :2], boxes2[:, :2])

import torch # 定义两个张量
boxes1 = torch.tensor([[1, 2, 3, 4], [5, 6, 7, 8]]) # 形状为(2, 4)
boxes2 = torch.tensor([[2, 3,4,5], [6, 7,8,9]])
print(boxes1.shape, boxes2.shape)

torch.Size([2, 4]) torch.Size([2, 4])

print(boxes1[:, None, :2])
print(boxes1[:, None, :2].shape)
tensor([[[1, 2]],

        [[5, 6]]])
torch.Size([2, 1, 2]) 变成了两个通道,每个通道有个一行两列的元素
boxes2[:,:2]
tensor([[2, 3],
        [6, 7]])
print(torch.max(boxes1[:, None, :2], boxes2[:, :2]))
torch.max(boxes1[:, None, :2], boxes2[:, :2]).shape
tensor([[[2, 3],
         [6, 7]],

        [[5, 6],
         [6, 7]]]) 
torch.Size([2, 2, 2]) 变成两个通道,每个通道有两行,每行有两列的元素
print(torch.max(boxes1[:, :2], boxes2[:, :2]))
tensor([[2, 3],
        [6, 7]])

基于渐进式语义-视觉互适技术的广义零样本学习代码笔记

yacs包

yet another configuration system的缩写,意为:又一个配置系统。是轻量级的、模块化的配置库。旨在有效地处理实现配置和后序调试的结果。

安装方法

pip install yacs

python中的package语法

包是一个包含多个模块的特殊目录,目录下有一个特殊的文件__init__.py

使用包好处:使用import 包名 可以一次性导入包中所有的模块。

包文件下必须有__init__.py文件:如果要在外界使用包中的模块,需要在__init__.py中指定对外界提供的模块列表。
在这里插入图片描述
.defaults 是指在当前文件下的defaults文件。从该文件中导入 _C 并重命名为 cfg。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

computer_vision_chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值