怎么在pytorch中使用float64训练?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
原因在于:
使用float16训练模型,模型效果会有损失,而使用double(float64)会有2倍的内存压力,且不会带来太多的精度提升。
本人,最近遇到需要使用double数据类型训练模型的情况,具体实现需要把模型的权重参数数据类型和输入数据类型全部设置为torch.float64即可。
可使用torch的一个函数,轻松地把模型参数转化为float64
torch.set_default_dtype(torch.float64)
输入类型可使用
tensor.type(torch.float64)
补充:float32和float64的本质区别
首先我们需要知道何为bits和bytes?
bits:名为位数bytes:为字节简单的数就是MB和G的关系!
那么8bits=1bytes,下面是各个单位的相互转化!
那么float32和float64有什么区别呢?
数位的区别一个在内存中占分别32和64个bits,也就是4bytes或8bytes数位越高浮点数的精度越高它会影响深度学习计算效率?
float64占用的内存是float32的两倍,是float16的4倍;
比如对于CIFAR10数据集,如果采用float64来表示,需要60000*32*32*3*8/1024**3=1.4G,光把数据集调入内存就需要1.4G;
如果采用float32,只需要0.7G,如果采用float16,只需要0.35G左右;
占用内存的多少,会对系统运行效率有严重影响;(因此数据集文件都是采用uint8来存在数据,保持文件最小)
pytorch的优点
1.PyTorch是相当简洁且高效快速的框架;2.设计追求最少的封装;3.设计符合人类思维,它让用户尽可能地专注于实现自己的想法;4.与google的Tensorflow类似,FAIR的支持足以确保PyTorch获得持续的开发更新;5.PyTorch作者亲自维护的论坛 供用户交流和求教问题6.入门简单
看完上述内容,你们掌握怎么在pytorch中使用float64训练的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网行业资讯频道,感谢各位的阅读!