pytorch学习

Posted Coding With you.....

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pytorch学习相关的知识,希望对你有一定的参考价值。

1.使用GPU

cuda0=torch.device('cuda:0')
a=torch.rand(3,3,requires_grad=True,device=cuda0)

2.Reduction运算

可以计算全局最大值 指定维度最大值 行/列累加cumsum() 累乘的值cumprod(),以及均值mean 中值median() 协方差std()

#a=torch.tensor([[1,2,5,3],[8,7,4,2]])

#m,n=torch.max(a,dim=1) #m表示每一行的最大值[5,8],n表示每一行最大值的索引[2,0]

#torch.unique()可以找出矩阵中出现了哪些元素 如果对这些元素进行排序,然后得到的token顺序是唯一的 用来判断哪些词出现/成为过热点

#这种思路是没有语义的,当然也可以有语义:就是对目标的id转为token后,大小num*embedding 然后输出是batchsize*num*embedding 两个进行loss 然后循环T轮就是1个epoch

#detach()与 detach_()前者是得到一个新的变量并且与原始变量使用同一个内存; detach_()是将当前变量设置为一个叶子节点,不会生成新的变量 因此这个变量a对后面的c求梯度不会影响该节点

a=torch.rand(3,3,requires_grad=True)

b=torch.rand(3,3,requires_grad=True)

c=torch.sum(torch.mm(a,b))

c.backward()

n=a.grad

aa=a.detach() #aa是没有梯度的,当aa不更改的时候a是可以进行反向传播的;当aa进行修改后a不能进行反向传播,会报错的

aa.zero_()

q=a.grad

c.backward() #当detach的对象进行修改后,这行是会报错的

print(aa,n,q)

''' a=tensor([[0.8693, 0.3418, 0.5900], [0.1915, 0.6663, 0.8975], [0.5038, 0.6811, 0.0428]], requires_grad=True) a=torch.rand(3,3,requires_grad=True) b=torch.rand(3,3,requires_grad=True)

c=torch.sum(torch.mm(a,b))

c.backward()

m=c.grad

n=a.grad

q=b.grad

m=None

n=tensor([[1.0511, 1.7045, 1.8039], [1.0511, 1.7045, 1.8039], [1.0511, 1.7045, 1.8039]]) q=tensor([[2.1797, 2.1797, 2.1797], [1.6719, 1.6719, 1.6719], [0.9321, 0.9321, 0.9321]]) '''

以上是关于pytorch学习的主要内容,如果未能解决你的问题,请参考以下文章

[人工智能-深度学习-2]:单机学习平台的搭建,详细安装过程(Tensorflow,PyTorch)

深度学习-PyTorch框架实战系列

PyTorch之人工智能学习路线

深度学习之 Keras vs Tensorflow vs Pytorch 三种深度学习框架

深度学习之 Keras vs Tensorflow vs Pytorch 三种深度学习框架

深度学习之 Keras vs Tensorflow vs Pytorch 三种深度学习框架的差异