• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    pytorch 如何使用float64训练

    pytorch默认使用单精度float32训练模型,

    原因在于:

    使用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半精度浮点型网络训练的问题
    • PyTorch梯度裁剪避免训练loss nan的操作
    • pytorch训练神经网络爆内存的解决方案
    • Pytorch训练模型得到输出后计算F1-Score 和AUC的操作
    • pytorch加载预训练模型与自己模型不匹配的解决方案
    • Pytorch训练网络过程中loss突然变为0的解决方案
    上一篇:pytorch 使用半精度模型部署的操作
    下一篇:只需要这一行代码就能让python计算速度提高十倍
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    pytorch 如何使用float64训练 pytorch,如何,使用,float64,