python十进制单精度浮点(float)转16位16进制(FP16 hex)
目的
将神经网络权重存放到FPGA内部需要将可训练参数从float转换到FP16 hex。
Code
# tt.py
import struct
import numpy as np
dec_float = 5.9
# 十进制单精度浮点转16位16进制
hexa = struct.unpack('H',struct.pack('e',dec_float))[0]
hexa = hex(hexa)
hexa = hexa[2:]
print(hexa) # 45e6
# 16位16进制转十进制单精度浮点
y = struct.pack("H",int(hexa,16))
float = np.frombuffer(y, dtype =np.float16)[0]
print(float) # 5.9
测试
测试环境
- python 3.6.4
测试结果
测试输入5.9转换16位16进制为45e6, 反向转换测试5.9,说明正确