【问题标题】:numpy astype from float32 to float16numpy astype 从 float32 到 float16
【发布时间】:2018-03-24 03:57:56
【问题描述】:

我想知道 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)

【问题讨论】:

  • 和题目无关,但是如果你想投个数,可以简单的使用np.float32()np.float16()

标签: python numpy floating-point


【解决方案1】:

IEEE 754-2008 16 位 base 2 格式,也就是 binary16,不会给你太多的精度。你对 16 位有什么期望? :) 1 位是符号位,5 位用于指数,剩下 10 位来存储归一化的 11 位尾数,所以任何 > 2**11 == 2048 的东西都必须量化。

根据Wikipedia,4097 到 8192 之间的整数舍入为 4 的倍数,8193 到 16384 之间的整数舍入为 8 的倍数。

【讨论】:

    猜你喜欢
    • 2019-11-03
    • 2020-09-12
    • 2018-03-18
    • 2019-11-21
    • 2011-07-27
    • 1970-01-01
    • 1970-01-01
    • 2020-01-12
    • 2016-11-16
    相关资源
    最近更新 更多