向量乘法
(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()#获取模型的全部参数