关于 Pytorch 学习的一些小困惑的理解

目录

小记

20.2.27

model=model.cuda()和model=model.to('cuda')是等价的嘛?

模型会自动初始化嘛?

训练好的网络模型是如何保存的?又是如何再加载的?

哪些部分可以移到GPU上运算?

关于torch.nn.multinomial方法的深入探讨

2.28

关于熵,相对熵,KL散度,交叉熵概念的学习

关于nn.embedding的维度的定义,函数的理解,一些需要注意的点

3.1

关于loss.backward()以及其参数retain_graph的一些坑

3.2

关于pytorch网络模型可视化函数make_dot的一些问题

未完待续。。。


小记

如题,本文用于总结学习Pytorch的一些小困惑,大的问题,可能会拉出来单写一篇博客,没解决的问题也会暂且放进来,解决了之后再补上去解决方法~~ 目前本人处于菜鸡阶段,深度学习的理论储备有了一些,但还没有真正完整独立的完成一个项目,急需真枪实弹的操练一把,不能继续咸鱼下去了_(T-T」 ∠)_

下一周就开始正式上(网)课了,后面争取每天都能遇到一个有收获的问题,并且在这里进行总结~ 大家可以相互学习,相互监督呀!(*•̀ㅂ•́)و~  如果有大佬想指点一二,请移步评论区,感激不尽!

更改模式-----简单的问题在这里解释,难的直接放一个传送门,传送到单独解释的博客~~

20.2.27

model=model.cuda()和model=model.to('cuda')是等价的嘛?

PyTorch 0.4.0通过两种方法使代码兼容变得非常容易:

  • 张量的device属性为所有张量提供了torch.device设备。(注意:get_device仅适用于CUDA张量)
  • to方法TensorsModules可用于容易地将对象移动到不同的设备(代替以前的cpu()cuda()方法)

所以,现在使用Modules.to('cuda')等价于Modules.cuda()

模型会自动初始化嘛?

pytorch神经网络模型会自动初始化嘛?

训练好的网络模型是如何保存的?又是如何再加载的?

网络模型,保存的实际上是参数,而参数的存储形式,实际上是一个orderedDict,即一个有序字典,而加载当然可以直接用modules.load_state_dict(orderedDict)函数,当然如果是不同的模型,需要加一个循环进行判断,方法可以如下~:

net = originNet()
pretrainparameter = torch.load('somemodule.pth') #加载预训练模型
netparameter = net.state_dict() #获取当前网络的参数

for key in pretrainparameter.keys():
    if key in netparameter.keys(): #匹配关键字
        netparameter[key] = pretrainparameter[key] # 参数赋值

net.load_state_dict(netparameter)  #将匹配参数传入


哪些部分可以移到GPU上运算?

modules(即网络模型)tensors(即运算张量)都可以利用to('cuda')方法转移至GPU内存中进行运算。

关于torch.nn.multinomial方法的深入探讨

 

2.28

关于熵,相对熵,KL散度,交叉熵概念的学习

这个有一篇文章讲得很好,这里放一个链接

一文搞懂交叉熵在机器学习中的使用,透彻理解交叉熵背后的直觉

关于nn.embedding的维度的定义,函数的理解,一些需要注意的点

emmm  来补一个坑 传送门 要注意的点也不是很多啦,3.9号才给填上的我是真的有点懒= =

3.1

关于loss.backward()以及其参数retain_graph的一些坑

emmm 因为篇幅挺长的,单独发了一篇,传送门~~关于loss.backward()以及其参数retain_graph的一些坑

3.2

关于pytorch网络模型可视化函数make_dot的一些问题

这个也是直接传送门吧ε=ε=ε=ε=ε=ε=┌(; ̄◇ ̄)┘

未完待续。。。

 

 

你可能感兴趣的:(炼丹随笔)