深度强化学习中的硬件与状态设计
1. 浮点数据类型
浮点数据类型从 16 位开始有 float16、float32 和 float64 三种实现。它们在大小、计算速度和可表示的小数精度上存在差异,位数越多精度越高。float16 被称为半精度,float32 为单精度,float64 是双精度。由于 8 位浮点数精度低,在大多数应用中不可靠,因此没有对应的实现。
半精度的计算速度是单精度的两倍,对于不需要高精度小数的计算已经足够,并且适合存储,因为大多数原始数据不需要那么多小数位。对于大多数计算,单精度就足够了,它也是包括深度学习在内的许多程序最常用的类型。双精度主要用于需要高精度的科学计算,如物理方程。
在选择合适的类型来表示浮点值时,需要考虑字节大小、速度、范围、精度和溢出行为等因素。以下是一个使用 np.clip 函数的示例:
import numpy as np
np.clip(np.array([0, 255, 256, 257], dtype=np.int16), 0, 255).astype(np.uint8)
# => array([0, 255, 255, 255], dtype=uint8)
2. RL 中数据类型的优化
2.1 常见数据类型及其大小
以下是一些常见数据类型及其在 numpy 中的大小示例:
import numpy as np
# 8-bit unsigned
深度强化学习硬件与状态设计
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



