核心要点

  • 熟悉 float32、int64、bool 等常用 dtype

  • 知道 tf.string、tf.complex 存在

  • 理解 dtype 与算子、损失匹配

  • 能 cast 转换类型

简要回答

TensorFlow 支持 float16/32/64、int8/16/32/64、uint8、bool、string、complex64/128 等 dtype;深度学习训练多用 float32,标签常用 int64。

标准回答

TensorFlow 张量支持丰富 dtype

类型 用途
float32 默认训练精度
float16 / bfloat16 混合精度加速
float64 高精度数值(较少)
int32 / int64 索引、标签(int64 常用)
uint8 图像原始像素
bool 掩码、条件
string 文本 token(tf.data)
complex64/128 信号处理

注意

  • 算子对 dtype 有要求,混用会隐式提升或报错
  • tf.cast(x, tf.float32) 显式转换
  • Keras 默认 float32;混合精度 tf.keras.mixed_precision 用 float16 算、float32 累加
  • 标签 sparse_categorical_crossentropy 期望 int64 类别索引

与 NumPy dtype 大致对应,互转时注意 tf.constant(np_arr) 保留 dtype。详见 TensorFlow 文档。

回答思路

  • 【定义】用一句话说清「TensorFlow 支持哪些数据类型」

  • 【原理】讲清关键机制或步骤(2~3 点)

  • 【例子】举一个真实项目、论文或产品中的例子

  • 【对比】与易混淆概念或替代方案比较(如有)

  • 【收尾】总结适用场景 + 一个局限或风险

延伸学习

常见误区

⚠️ 常见踩坑

图像 uint8 未归一化就训练;标签 float 传交叉熵;float16 全链路不用 loss scale 导致 NaN。

追问

追问 1混合精度如何配置?

tf.keras.mixed_precision.set_global_policy("mixed_float16");输出层常保持 float32 防下溢;配合 LossScale 防梯度 underflow。

落地时需结合业务场景说明取舍、边界条件与可观测指标,避免只背概念。

追问 2int32 和 int64 标签用哪个?

TensorFlow 稀疏标签推荐 int64,与 GPU kernel 默认一致;int32 部分 op 需显式 cast。

落地时需结合业务场景说明取舍、边界条件与可观测指标,避免只背概念。

追问 3string 张量能参与数学运算吗?

不能直接与 float 运算;用于 tf.data 文本管道,经 lookup/hash 转为数值嵌入后再进模型。

🔗 相似问题

同一考点的不同问法,换着练更稳

没找到想看的面试题?把你想看的告诉我们 →

延伸学习

按主题分类的相关资源,便于系统复习