TensorFlow1.10中tf.FixedLenFeature等三类特征解析配置的区别是什么
TensorFlow 1.10 版本三类特征解析配置类差异说明
这三个类均为tf.parse_example、tf.parse_single_example、tf.parse_sequence_example等TFRecord特征解析接口的配置参数,用于指定对应特征的解析规则,具体差异如下:
1. tf.FixedLenFeature
- 适用场景:仅用于解析定长特征,是常规定长特征的通用解析配置
- 核心参数:必须指定
shape(特征的固定维度)、dtype(特征数据类型),可选配置default_value(特征不存在时的默认填充值,需和指定shape匹配) - 解析输出:返回和指定
shape完全一致的稠密Tensor,无稀疏结果 - 用法示例:解析长度为128的浮点型 embedding 特征
tf.FixedLenFeature(shape=[128], dtype=tf.float32, default_value=tf.zeros([128], tf.float32))
2. tf.VarLenFeature
- 适用场景:用于解析无固定长度上限的变长特征,适合长度波动极大的离散特征场景
- 核心参数:仅需指定
dtype,无需配置shape参数 - 解析输出:返回
tf.SparseTensor类型的稀疏张量,可通过tf.sparse_tensor_to_dense接口手动转为稠密张量;若样本不存在该特征,默认返回空稀疏张量 - 注意:该类解析的多值特征会被展开为一维稀疏张量,不会保留原始的序列维度结构
3. tf.FixedLenSequenceFeature
- 适用场景:用于解析有固定长度上限的变长序列特征,适合同批次样本序列长度不一致但不超过预设最大值的场景
- 核心参数:必须指定
shape(序列的最大维度,例如序列最大长度为64、每个元素为3维向量则配置为[64, 3])、dtype,可选配置allow_missing(是否允许样本不存在该特征,默认值为False)、default_value(超出实际序列长度的位置的填充值) - 解析输出:返回和指定
shape一致的稠密Tensor,实际长度不足的位置会自动用default_value填充,会完整保留原始序列的维度结构 - 注意:该类通常配合
tf.parse_sequence_example接口使用,也可在tf.parse_example中用于定长维度的列表类特征解析
核心差异汇总
- 适用场景区分:
- 固定维度的特征(如年龄、图片像素矩阵、固定长度的embedding)选用
tf.FixedLenFeature - 长度波动极大无固定上限的变长特征(如用户全生命周期点击序列、长尾搜索词特征)选用
tf.VarLenFeature - 预先做过截断处理、最大长度固定的变长序列特征(如分词后截断到64字的句子特征、固定最大长度的语音帧序列)选用
tf.FixedLenSequenceFeature
- 固定维度的特征(如年龄、图片像素矩阵、固定长度的embedding)选用
- 输出类型区分:
tf.FixedLenFeature、tf.FixedLenSequenceFeature默认输出稠密Tensortf.VarLenFeature默认输出稀疏Tensor
- 参数配置区分:
tf.VarLenFeature无需指定shape,其余两类都需要指定shape参数
内容的提问来源于stack exchange,提问作者Bowen Peng
相关产品推荐
相关产品推荐

