Pytorch 快速入门 :从tensorflow转Pytorch的笔记(gat

2022-02-09

从转弯中学习,比较两者的区别:

vs,哪个更适合你

为什么要切换?

更灵活(使用可以找到很多其他人的代码,更容易使用实现自己的想法),支持(也就是说,它基本上可以用作numpy)

更快

代码简洁好用(0.版本4以后没有这个定义,只有一个定义,=True可以自动区分替换)

关于细节的一些发现

1.以下划线结尾的函数是修改自身值的操作。

 tensorA.add_(tensorB)  # 会改变tensorA的值

2. 和 numpy 易于转换和共享内存。

 numpyA = tensorA.numpy()  # Tensor -> Numpy

 tensorA  = torch.from_numpy(numpyA) # Numpy -> Tensor

3.如果只有一个元素,可以调用.item()直接获取元素值。

4..() 反向传播后,累加.grad梯度值,使用()将梯度清为0后再使用反向传播。

5.view()有两个作用,一个是改变形状,一个是让新的和原来的共享内存,相当于深拷贝(),而普通的=赋值方式不会共享内存。

6.()是另一种可以用来调整大小的方法,但是和view()不同的是,如果新的维度超过了原来的维度,就会自动分配新的内存空间。

图片[1]-Pytorch 快速入门 :从tensorflow转Pytorch的笔记(gat-唐朝资源网

7.添加或删除维度,None类似于np.()

 tensor.unsqueeze(n) # 在第n个维度上增加1个维度
 tensor.squeeze(n) # 在第n个维度上压缩
 tensor.squeeze(1)  # 压缩所有维数为1的维度

8.()分配整块内存,有的不占用整块内存,而是由不同的数据块组成,view()操作依赖整块内存。

图片[2]-Pytorch 快速入门 :从tensorflow转Pytorch的笔记(gat-唐朝资源网

10.计算完成后,非叶子节点的梯度被清除。可以使用.grad或者hook方法获取非叶子节点的值

常用库

神经网络

torch.nn
nn.Module
nn.functional 

图片[3]-Pytorch 快速入门 :从tensorflow转Pytorch的笔记(gat-唐朝资源网

nn.Sequential

原文:

分类:

技术要点:

相关文章:

© 版权声明
THE END
喜欢就支持一下吧
点赞8赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容