pytorch/python 常见的函数总结 自用

pytorch/python 常见的函数总结 自用

  1. torch.normal(0,1,(n,dim)) 0,1正态分布,n*dim

  2. np.power(x1,x2) 可以是整数或数组,数组的时候,x1[i,j]**x2[i,j]
    x1(200 * 1) 2(1 * 20) x1每行的数据都要取x2每列的次方
    在这里插入图片描述

  3. np.arrange(start,end,strip) 生成数组

  4. reshape(2,3) 如果为-1,代表根据剩下的维度计算新的维度 x=np.arrange(6).reshape(3,2) [[1,2,3][4,5,6]]
    z.reshape(-1)#改成一串,没有行列

  5. np.dot(m1,m2) 矩阵乘法

  6. x= torch.tensor((x,dtype=float32) for i in [x]) 转换成tensor

  7. torch.randn((2,5))
    tensor([[ 1.0559, -0.3533, 0.5194, 0.9526, -0.2483],
    [-0.1293, 0.4809, -0.5268, -0.3673, 0.0666]])、
    torch.randn[batch, channel, height, width]

  8. torch.permute(0,2,1) 将tensor的维度进行转换,这个例子是将第2维和第1维交换。

  9. torch.chunk(目标张量,等分块数,按照维度)按照某维度,对张量进行均匀切分,并且返回结果是原张量的视图,并没有新生成一个对象。不能均匀切分的时候,也不会报错

  10. y=y.contiguous().view(bs,self.nh*self.nw,-1) 调用contiguous()之后,PyTorch会开辟一块新的内存空间存放变换之后的数据,并会真正改变Tensor的内容,按照变换之后的顺序存放数据。在torch里面,view函数相当于numpy的reshape。

  11. y=y.transpose(1,2) #(bs,channels,tokens) 交换了坐标轴,这里忽略了第一维,默认保持不动

  12.     # 偏置参数没有衰减   
       trainer = torch.optim.SGD([
       {"params":net[0].weight,'weight_decay': wd},
       {"params":net[0].bias}], lr=lr)
       #实例化优化器时直接通过weight_decay指定weight decay超参数。
       #默认情况下,PyTorch同时衰减权重和偏移。 这里我们只为权重设置了weight_decay,所以偏置参数不会衰减。
    
  13. mask = (torch.rand(X.shape) > dropout).float() dropout的实现步骤, 以dropout的概率丢弃张量输入X中的元素),这里就是生成mask。在前向传播过程中,计算每一内部层的同时丢弃一些神经元。避免过拟合,期望值保持不变。保留的值需要除以1-dropout。

  14. jupyter内核挂掉

import os
os.environ["KMP_DUPLICATE_LIB_OK"]  =  "TRUE"
  1. 从已有模型中访问参数 net[2].state_dict()
#输出 OrderedDict([('weight', tensor([[ 0.0743,  0.1876,  0.0571,  0.3447,  0.3483, -0.2867,  0.3273, -0.1527]])), ('bias', tensor([0.1162]))])
print(type(net[2].bias))
print(net[2].bias)
print(net[2].bias.data)
#输出 区进一步访问参数的值
#<class 'torch.nn.parameter.Parameter'>
#Parameter containing:
#tensor([0.1162], requires_grad=True)
#tensor([0.1162])
net.state_dict()['2.bias'].data 
#输出ensor([0.1162]) 
  1. torch.nn.functional.one_hot(tensor, num_classes=- 1)
F.one_hot(torch.tensor([0, 2]), len(vocab))
#参数1 tensor 代表one_hot为1的值未知,参数2 长度
  1. lambda 函数是一种快速定义单行的最小函数
  2. Y.reshape((-1, Y.shape[-1])) 如果Y是三维(a,b,c)=>(a*b,c)
  3. .unsqueeze(2)该函数用来增加某个维度。squeeze()该函数用来减少某个维度。
  4. torch.bmm(a,b),两个tensor的矩阵乘法。tensor a 的size为(b,h,w),tensor b的size为(b,w,m) 也就是说两个tensor的第一维是相等的,然后第一个数组的第三维和第二个数组的第二维度要求一样,对于剩下的则不做要求,输出维度 (b,h,m)
  5. scores = torch.bmm(queries, keys.transpose(1,2)) / math.sqrt(d)
  6. torch.repeat_interleave(input, repeats, dim=None) → Tensor 输入tensor,每个元素的重复次数,需要重复的维度。默认情况下,将把输入张量展平(flatten)为向量,然后将每个元素重复repeats次,并返回重复后的张量。repeat_interleave
  7. Python __call__ 方法,相当于重载了(),可以实现调用功能
  8. wandb(Weights & Biases) 在线模型训练可视化工具,跟踪实验,记录运行中的超参数和输出指标,可视化结果wandb解读
  9. distributed,多卡训练:barrier解读
    多卡解读
    解读2
  10. verbose参数:verbose是日志显示,有三个参数可选择,分别为0,1和2 解读
  11. collate_fn 整理数据的函数解读
  12. torch.clamp(input, min, max, out=None) → Tensor 将输入input张量每个元素的夹紧到区间 [min,max][min,max],并返回结果到一个新张量。
  13. @property:添加@property 后,方法就变成一个属性,如果后面加入了(),那么就是当作函数来调用,现在这个方法不是callable(可调用)的。
  14. 反向传播过程 解读
trigger_ids = trigger_ids.repeat(trigger_mask.size(0), 1). #列的重复倍数,行的重复倍数)。1表示不重复,所以复制得到mask的那么多的列,行数不变  
filled = input_ids.masked_scatter(trigger_mask, trigger_ids)
  1. nn.Embedding(num_embeddings-词典长度,embedding_dim-向量维度) 解读
  2. torch.full(size, fill_value)填充size大小都为fill_value
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值