当前位置: 首页 > news >正文

上海站优云网络科技有限公司完成网站的建设工作内容

上海站优云网络科技有限公司,完成网站的建设工作内容,wordpress php apache,企业网页设计制作混合精度训练原理之float16和float32数据之间的互相转换 本篇文章参考#xff1a;全网最全-混合精度训练原理 上述文章已经讲解的比较详细#xff0c;本文只是从数值角度分析#xff1a; 1. float32转入float16的精度误差 2. 在深度学习的混精度训练当中#xff0c;当参数…混合精度训练原理之float16和float32数据之间的互相转换 本篇文章参考全网最全-混合精度训练原理 上述文章已经讲解的比较详细本文只是从数值角度分析 1. float32转入float16的精度误差 2. 在深度学习的混精度训练当中当参数值float32)获取到计算得到的梯度值float16)后的更新过程。 问题一float32转入float16的精度误差 首先我们还是回顾一下float16和float32在计算机当中的存储格式 有了上述内容之后我们通过一个实际的例子来观察float32到float16的舍入误差(我们使用python的numpy作为例子演示当用到具体框架如pytorch将其转化为Tensor再进行转化是一样的 当我们创建了一个十进制数据[1.12156456132]并通过float32进行存储。 big_value32 np.array([1.12156456132], np.float32) print(fbig_value32:{big_value32[0]:.23f})//result: big_value32:1.12156450748443603515625不考虑计算机存储我们使用十进制转二进制得到【1.12156456132 】的二进制表示为【1.000111110001111011011010111001110011100011010100001…】,它是一个不能在有限精度内存储的数据根据上述float32的存储空间表示我们知道它只能保存23位有效数字不包含首位的1截取后他在计算机中的表示为【1.00011111000111101101101】截取时查看后一位为1时进一位为0时不进位故其十进制表示为【1.12156450748443603515625】所以在存取数字时是有损失的舍入为float16时计算的存储表示为【1.0001111100】表示为十进制为 【1.12109375】 这个时候便产生了舍入误差。 问题二在深度学习的混精度训练当中当参数值float32)获取到计算得到的梯度值float16)后的更新过程。 在混精度训练中为什么一定要保存一份float32的权重副本用于和计算得出的float16数据做更新因为如果用float16和float16做计算加法相对于float32会造成精度的损失甚至导致无法更新。 我们仍然举一个例子来说明这个问题我们考虑一个十进制的原始数据权重假设为【1.125】利用float16二进制存储为【0 01111 0010000000】float32二进制存储为【0 01111111 00100000000000000000000】。同时考虑一个计算得出的float16梯度假设为【0.12457275190625】二进制float16表示为【0 01011 1111111001】。我们使用float16的原始权重去做更新即【0 01111 0010000000】【0 01011 1111111001】由于他们的指数部分不相同我们需要将指数较小的数据的小数点向左移以保证他们的指数部分对齐【0 01011 1111111001】将指数部分对齐【0 01111 0010000000】后小数点需要向左移4位在左边补0移位之后的结果为【0 01111 0001111111】。将两者的有效位部分相加即【0010000000】0【0001111111】1括号里面表示第11位有效位数值用于进位根据二进制加法我们综合符号位和指数为得到最后结果为【0 01111 0100000000】转换为十进制为【1.250】。 跟上个例子一样但我们考虑使用float32去和新计算出来的float16数据做计算在计算过程中float16会被转换为更高精度的float32参与计算。二进制float16【0 01011 1111111001】转换为float32为【0 01111011 11111110010000000000000】指数位122有效位数后面补0。进行加法计算【0 01111111 00100000000000000000000】【0 01111011 11111110010000000000000】算得最后结果为【0 01111111 00111111111001000000000】转换为十进制为【1.24957275390625】。从中我们可以看到精度的损失这也是为什么要保存权重的高精度副本用于更新。 如果还有理解不到位的地方可以配合这两个工具食用 在线IEEE浮点二进制计算器在线进制转换 附1.更新失效例子mindspore代码 import numpy as np import mindspore as ms from mindspore import Tensor import structdef float_to_bin(num):return format(struct.unpack(!I, struct.pack(!f, num))[0], 032b)def float16_to_bin(num):float16 np.float16(num)int_bits np.frombuffer(float16.tobytes(), dtypenp.uint16)[0]bin_str format(int_bits, 016b)return bin_strbig_value32 np.array([1.125], np.float32) big_value16 big_value32.astype(np.float16) # 转换为float16print(fweight_float16:{big_value16[0]:.23f}) print(fweight_float32:{big_value32[0]:.23f}) print(float16_to_bin(big_value16[0])) print(float_to_bin(big_value32[0]))small_value_float16 np.array([0.00041999], np.float16) print(fgrad_float16:{small_value_float16[0]:.23f}) print(float16_to_bin(small_value_float16[0])) print(float_to_bin(small_value_float16[0]))# 在MindSpore中进行计算 small_tensor_float16 Tensor(small_value_float16, ms.float16) big_tensor16 Tensor(big_value16, ms.float16) big_tensor32 Tensor(big_value32, ms.float32)# float32与float16相加 print(f------epoch 0--------) result1 big_tensor32 small_tensor_float16 print(ffloat32 float16: {result1.asnumpy()[0]:.23f},result1.dtype) result2 big_tensor16 small_tensor_float16 print(ffloat16 float16: {result2.asnumpy()[0]:.23f},result2.dtype) for i in range(100):print(f------epoch {i1}--------)result1 small_tensor_float16print(ffloat32 float16: {result1.asnumpy()[0]:.23f},result1.dtype)result2 small_tensor_float16print(ffloat16 float16: {result2.asnumpy()[0]:.23f},result2.dtype)print(float32 float16:, result1.asnumpy(),result1.dtype) print(float16 float16:, result2.asnumpy(),result2.dtype)if not np.isclose(result1.asnumpy(), result2.asnumpy()):print(The results are different!) else:print(The results are the same!) 2.误差累积例子将上述small_value_float16改为0.12457275190625即可得到问题2例子2中观察
http://www.hkea.cn/news/14499249/

相关文章:

  • 有个印度做网站的天天找我男生做网站编辑
  • 名城建设有限公司网站中国科技
  • 网站建设编辑教程浅谈一下网络营销的几个误区
  • 个人网站我的大学我做主页面网站与备案信息不符
  • 银行虚拟网站制作有人有片资源吗免费高清
  • 建设企业网站作用小米路由器3 做网站
  • 推广网站企业手机网站开发c 教程
  • iis7添加网站网站目录优化
  • 天津有哪些好的做网站公司网站做视频怎么赚钱的
  • 企业网站推广建议如何在阿里云上做网站备案
  • 免费织梦网站模板创网络用语是什么意思
  • 江门网站关键词推广外链代发公司
  • 北京常用网站wordpress 模板 破解版
  • 有关做粪污处理设备的企业网站网站开发的理解
  • 设计iphone手机网站淘宝网站品牌设计
  • 简历网站免费动画制作专业学校排名
  • 蓝杉网站建设公司建设网站资质查询
  • 4435建站wordpress整合ck
  • 个人网站备案网站名称重庆网站设计中心
  • 做的做的比较好的网站惠州公司网站建设价格
  • 律所网站建设数字展厅网站建设
  • 泰安市景区建设网站天猫网站建设的目的
  • 怎么换自己的网站服务器网站建设及网站推广
  • 宁波网站建设报价多少兰州网络推广优化服务
  • 苏州学做网站网站建设添加汉语
  • 网站建设福建杭州网站建设费用多少
  • 网站 购买广告设计培训目的
  • 做财税的网站有哪些青岛网站推广哪家效果好
  • 手机网站设计网站上面怎么做链接
  • 贵阳专业网站建设公司哪家好一般网站建设大概需要多少钱