我想知道 numpy 如何从 float32 转换为 float16,因为当我使用 astype 将一些数字(如 8193)从 float32 转换为 float16 时,它将输出 8192,而将 10000 个 float32 转换为 10000 个 float16。
import numpy as np
a = np.array([8193], dtype=np.float32)
b = a.astype(np.float16)
最佳答案
IEEE 754-2008 16 位 base 2 格式,又名 binary16,不能提供很高的精度。您对 16 位有什么期望? :) 1 位是符号位,5 位用于指数,剩下 10 位用于存储归一化的 11 位尾数,因此任何 > 2**11 == 2048 都必须量化。
根据 Wikipedia , 4097 到 8192 之间的整数四舍五入到 4 的倍数,8193 到 16384 之间的整数四舍五入到 8 的倍数。
关于python - 从 float32 到 float16 的 numpy astype,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46705778/