TensorFlow数据类型dtype详解:从基础类型到转换方法
本文详细解析TensorFlow中的核心数据类型dtype,涵盖有符号/无符号整型、浮点数、字符串及布尔型等常用类型。重点介绍tf.as_dtype()函数的用法,以及如何通过dtype属性查看和astype方法进行数据类型转换,帮助开发者在模型构建中准确管理数据格式。
在TensorFlow框架中,数据类型(dtype)是定义张量属性的基础要素。值得注意的是,在较旧的TensorFlow版本中,部分数据类型可以直接使用而不必显式添加tf前缀,但为了代码的兼容性和规范性,建议始终使用完整的命名空间。
有符号整型
tf.int8表示8位有符号整数,常用于量化模型以节省存储空间。
tf.int16表示16位有符号整数,适用于需要中等精度整数的场景。
tf.int32表示32位有符号整数,是大多数系统中整数的标准类型。
tf.int64表示64位有符号整数,适用于需要极大数值范围的计算任务。
无符号整型
tf.uint8表示8位无符号整数,其取值范围不包含负数,常见于图像像素数据处理。
tf.uint16表示16位无符号整数,同样用于处理非负整型数据。
浮点型
tf.float16表示16位半精度浮点数,广泛用于深度学习训练中以加速计算并减少内存占用。
tf.float32表示32位单精度浮点数,是深度学习中最常用的默认浮点类型。
tf.float64表示64位双精度浮点数,提供更高的数值精度,适用于科学计算等高精度需求场景。
tf.double是tf.float64的别名,两者在功能上完全等同,使用任一均可。
字符串型
tf.string用于存储字符串数据,在自然语言处理任务中处理文本输入时必不可少。
布尔型
tf.bool表示布尔类型,用于存储真值或假值,常用于条件判断和掩码操作。
复数型
tf.complex64表示64位复数,由两个32位浮点数分别表示实部和虚部。
tf.complex128表示128位复数,由两个64位浮点数分别表示实部和虚部,提供更高的复数运算精度。
补充:tensorflow及numpy的数据类型对象Dtype总结
1.dtyte与astype
dtype:查看数据类型,通过访问张量的dtype属性可以获取其当前的数据类型对象。
astype:转换数据类型,使用astype方法可以将现有张量转换为指定的新数据类型,注意这可能会引发数据截断或精度损失。

2.tensorlow数据类型对象Dtype
| 名称 | 描述 |
|---|---|
| tf.float16 | 16位半精度浮点 |
| tf.float32 | 32位单精度浮点 |
| tf.float64 | 64位双精度浮点 |
| tf.bfloat16 | 16位截断浮点 |
| tf.complex64 | 64位单精度复数 |
| tf.complex128 | 128位双精度复数 |
| tf.int8 | 8位有符号整数 |
| tf.uint8 | 8位无符号整数 |
| tf.uint16 | 16位无符号整数 |
| tf.int16 | 16位有符号整数 |
| tf.int32 | 32位有符号整数 |
| tf.int64 | 64位有符号整数 |
| tf.bool | 布尔值 |
| tf.string | 字符串 |
| tf.qint8 | 量化的8位带符号整数 |
| tf.quint8 | 量化的8位无符号整数 |
| tf.qint16 | 量化的16位有符号整数 |
| tf.quint16 | 量化的16位无符号整数 |
| tf.qint32 | 量化的32位有符号整数 |
tf.as_dtype()函数用于将NumPy类型或字符串类型的名称转换为TensorFlow的DType对象,这在动态构建模型或处理外部数据时非常有用。
3.numpy数据类型对象dtype
| 名称 | 描述 |
|---|---|
| np.bool_ | 布尔型数据类型 |
| np.int_ | 默认的整数类型 |
| np.intc | 与 C 的 int 类型一样,一般是 int32 或 int 64 |
| np.intp | 用于索引的整数类型,一般是 int32 或 int64 |
| np.int8 | 8位整数即1字节(-128 to 127) |
| np.int16 | 16位整数(-32768 to 32767) |
| np.int32 | 32位整数(-2147483648 to 2147483647) |
| np.int64 | 64位整数(-9223372036854775808 to 9223372036854775807) |
| np.uint8 | 8位无符号整数(0 to 255) |
| np.uint16 | 16位无符号整数(0 to 65535) |
| np.uint32 | 32位无符号整数(0 to 4294967295) |
| np.uint64 | 64位无符号整数(0 to 18446744073709551615) |
| np.float_ | float64 简写,即64位双精度浮点数 |
| np.float16 | 16位半精度浮点数,包括:1 个符号位,5 个指数位,10 个尾数位 |
| np.float32 | 32位 单精度浮点数,包括:1 个符号位,8 个指数位,23 个尾数位 |
| np.float64 | 64位双精度浮点数,包括:1 个符号位,11 个指数位,52 个尾数位 |
| np.complex_ | complex128 简写,即 128 位复数 |
| np.complex64 | 复数,表示双 32 位浮点数(实数部分和虚数部分) |
| np.complex128 | 复数,表示双 64 位浮点数(实数部分和虚数部分) |
以上为个人经验,希望能给大家一个参考,也希望大家多多支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









