pytorch coding笔记

Autograd

pytorch最重要的机制。

Tensor

torch.Tensor是最核心的class,将其.requires_grad设为True后,会开始追踪这个Tensor受到的所有操作。完成计算以后再call .backward(),所有梯度都会自动计算,并累加在.grad里。

停止tracking,call .detach()

Function也是一个很重要的class。每个tensor有个.grad_fn说明它从哪个Function得来。举例子:

x = torch.ones(2, 2, requires_grad=True)
y = x + 2
print(y.grad_fn)
Out:
<AddBackward0 object at 0x7fe98e797f60>

说明y是通过Add得到的

Gradients

先用.backward()计算梯度,然后用.grad可以得到梯度的值。

停止计算梯度,可以用torch.no_grad()把代码包起来,也可以用.detach()。

指定gpu id

import os
os.environ["CUDA_VISIBLE_DEVICES"] = "3"

训练和测试

当网络中有 dropout,bn 的时候。训练的要记得 net.train(), 测试 要记得 net.eval()(https://blog.csdn.net/u012436149/article/details/78623576
这是因为eval()时,框架会自动把BN和DropOut固定住,不会取平均,而是用训练好的值,不然的话,一旦test的batch_size过小,很容易就会被BN层导致生成图片颜色失真极大https://blog.csdn.net/jinxin521125/article/details/78435899

模型保存加载

https://blog.csdn.net/u011276025/article/details/78507950

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 文/半夏 亲爱的梦梦: 你好! 梦梦,相处一年的时间,我觉得你是班里最可爱的女生。齐耳的短发,圆圆的娃娃脸...
    llz半夏阅读 235评论 0 1
  • 难得一身好本领 情关始终闯不过 闯不过柔情蜜意 乱挥刀剑无结果 有次代表老爹参加一个不知道是谁的婚礼。有个环节是主...
    半点正经阅读 146评论 0 0
  • 梦,还是电影 她让我在那里见你 似曾相识又有点陌生 你正郁郁闷闷 电话打个不停 我在一旁耐心的等 终于你有空 我试...
    快跑快跑阅读 99评论 0 1
  • 有想做的事就马上动身做吧,有想见的人就快快去见吧 ,别下次了,就这次吧 ,别以后了,就现在吧,因为 “改...
    那年卢卡小镇细雨灯花阅读 640评论 0 3