这两天完成了深度学习第一次实验,感觉确实对几种回归以及损失函数的计算什么的有了更加深刻的认识。
有几个困扰我半天的bug原来出在这些地方:
-
torch.mm和torch.matmul两个虽然都可用于矩阵相乘,但是两者还是有区别的。
torch.mm(a, b)是矩阵a和b矩阵相乘,比如a的维度是(1, 2),b的维度是(2, 3),返回的就是(1, 3)的矩阵。
而torch.matmul可以用于高维矩阵(图片)的相乘。例如高维矩阵a和b相乘,比如a的维度是(3, 4),b的维度是(5, 4, 2),返回的就是(5, 3, 2)的矩阵,因为后两维(3, 4)和(4, 2)矩阵相乘的结果是(3, 2)
当图片矩阵用于mm方法时,会报如下错:matrices expected, got 4D, 2D tensors。2.关于view()用法
view的作用是改变tensor的形状
view(3,2)表示变为32的张量
view(-1,x)表示根据原tensor中的数量动态调整为()行x列的tensor
v1 = torch.range(1, 16)
v2 = v1.view(-1, 4) 此时v2为44的张量此外在实验过程中截了个图展示一下view的作用
下方为张量X,上方为X.view((-1,num_inputs)),这里的num_inputs为10.