BERT书籍阅读笔记(二)PyTorch编程基础(1)

本文详细介绍了向量乘法的阿达玛积和点积,以及张量在PyTorch中的转换、维度调整和操作。此外,还讨论了如何确保模型训练结果的复现性,并概述了定义模型的基本步骤。最后,展示了获取模型信息的方法,包括参数、层结构和状态字典。
摘要由CSDN通过智能技术生成

向量乘法

(1)阿达玛积(Hadamard Product)
  定义为两个矩阵对应位置的元素进行相乘。

c = a * b

(2)点积(Dot Product)
  矩阵相乘,第一个矩阵的列数必须等于第二个矩阵的行数。

c = a @ b
c = np.dot(a, b)
c = torch.matmul(a,b)

张量间的操作

(1)张量与Numpy相互转换的陷阱
  在将Numpy转化为张量时,只是简单的将指针赋值,并不会发生复制现象,因此二者共享一块内存。
  PyTorch考虑了这一点,在Numpy转化为张量后,如果对张量进行修改,则其内部会触发复制机制,额外开辟一块内存,不会影响原来Numpy的值。
  但是对Numpy进行修改的话,会同时改变对应张量的值。
(2)修改张量的维度

a.reshape()
a.view()

  二者都要求指定的目标形状必须与原有的输入张量的元素个数一致,在指定形状的过程中可以用-1来代表该维度由系统自动运算。
  但是view要求存储连续,因此一般与contiguous()方法连用
(3)增减张量的维度

torch.squeeze() #去除值为1的维度
torch.unsqueeze()#增加一个值为1的维度
torch.cat()#张量拼接

(4)交换张量维度的值

torch.permute(1,0) #将维度0和维度1交换

控制模型每次训练的结果相同

torch.manual_seed(0)
torch.cuda.manuak_seed_all(0)
np.random.seed(0)#设计随机数种子

定义一个模型的基本步骤

  (1)定义模型类,使其继承于Module类。
  (2)在模型类的初始化接口中定义网络层
  (3)在模型类的正向数据流处理接口中,将网络层连接起来(需要时添加激活函数),搭建出网络结构。

获取模型信息

#获得各层信息及名字
model.children()
model.named_children()#获得各层信息及名字
model.modules()#获取整个网络的结构信息
model.parameters()
model.named_parameters()#获取模型中的参数
model.state_dict()#获取模型的全部参数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值