tf.one_hot()使用说明

这篇博客详细介绍了TensorFlow中的tf.one_hot函数,包括其参数解释和使用示例。tf.one_hot用于将整数索引转换为one-hot编码,其中指定位置的值为on_value,其他位置为off_value。当indices是多维张量时,输出会增加一维。文章强调了on_value和off_value的数据类型匹配以及如何处理不规则形状的输入。同时,提供了多个代码示例以帮助读者更好地理解和应用tf.one_hot。
部署运行你感兴趣的模型镜像

@tensorflow学习笔记

tf.one_hot

本文只作为个人学习记录,参考tensorflow中文官网 tf中文官网

调用格式

tf.one_hot(indices, depth, on_value=None, off_value=None, axis=None, dtype=None, name=None)

参数说明

· indices :一个索引的张量。
· depth : 定义one_hot 维度的标量
· on_value: 定义一个填充输出的值,其中indices[j] = i(默认:1)
· off_value: 定义填充输出的值,其中indices[j]!= i(默认:0)
· axis: 将要填充的轴axis(默认 -1 ,一个新的最内轴)
· dtype:输出张量的数据类型。
· name:操作的名称(可选)。

输出

一个 one_hot 张量

可能会出的错误

  1. TypeError
    是否 on_value 或 off_value 与 dtype 不匹配。
  2. TypeError
    是否 on_value , off_value 彼此不匹配

提示

  1. indices 所在位置取值为 on_value,而其他位置从 off_value 取值。

  2. on_value 和 off_value 数据类型一定要匹配。如果 dtype 有值,它们必须取与 dtype所显示类型相同的值。
    如果 on_value 没有值,默认值为 1,类型为 dtype.
    如果 off_value 没有值, 默认值为 0,类型为 dtype.
    如果 indices 是 N 维,则输出为 N+1 维。新的一维创建在 axis 所示的维(默认:新的一轴加在末尾)

  3. 如果 indices 是标量,则输出是长度为深度的向量。
    如果 indices 是长为 feature 的向量,则输出将会是: 在这里插入图片描述
    如果 indices 是一个大小为 [batch, features] 的矩阵(batch) ,输出形式为: 在这里插入图片描述
    如果 indices 是不规则形状(RaggedTensor),axis 必须是正的,且指向一个非不规则的轴。输出会等价与 one_hot 应用与一个不规则形状的值的输出,且从结果中产生一个新的不规则形状。
    如果 dtype 没有值,它会尝试假设数据的类型是 on_value 或者 off_value,如果一个或者两个都通过的话。如果 on_value, off_value, dtype 都没有值,dtpye 会默认值 为tf.float32.
    **注意:如果需要非数值类型的输出(如tf.string, tf.bool, etc), on_value, off_value 都需要有值。

例子

在这里插入图片描述

您可能感兴趣的与本文相关的镜像

TensorFlow-v2.15

TensorFlow-v2.15

TensorFlow

TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型

TensorFlow 2.6.2 中,`tf.one_hot` 函数用于将类别标签转换为 one-hot 编码格式。one-hot 编码是一种表示分类数据的方式,其中每个类别值被转换为一个二进制向量,该向量的长度等于类别的总数,且只有一个元素为 1,其余均为 0。 ### 函数签名 ```python tf.one_hot( indices, depth, on_value=None, off_value=None, axis=None, dtype=None, name=None ) ``` ### 参数说明 - `indices`:一个张量,表示类别标签的索引。 - `depth`:一个整数,表示 one-hot 向量的深度(即类别的总数)。 - `on_value`:可选参数,表示 one-hot 向量中对应索引位置的值,默认为 1。 - `off_value`:可选参数,表示 one-hot 向量中非索引位置的值,默认为 0。 - `axis`:可选参数,表示 one-hot 向量的轴,默认为 -1,即最后一个轴。 - `dtype`:可选参数,表示输出张量的数据类型,默认为 `tf.float32`。 - `name`:可选参数,表示操作的名称。 ### 示例代码 #### 示例 1:基本用法 ```python import tensorflow as tf # 定义类别标签的索引 indices = [0, 2, -1, 1] depth = 3 # 使用 tf.one_hot 转换为 one-hot 编码 one_hot = tf.one_hot(indices, depth) # 打印结果 print(one_hot) ``` 输出: ``` tf.Tensor( [[1. 0. 0.] [0. 0. 1.] [0. 0. 0.] [0. 1. 0.]], shape=(4, 3), dtype=float32) ``` 在这个例子中,`indices` 是一个包含类别标签索引的列表,`depth` 表示类别的总数。`tf.one_hot` 将这些索引转换为 one-hot 编码,并返回一个形状为 `(4, 3)` 的张量。 #### 示例 2:指定 `on_value` 和 `off_value` ```python # 定义类别标签的索引 indices = [0, 2, 1] depth = 3 # 指定 on_value 和 off_value one_hot = tf.one_hot(indices, depth, on_value=5.0, off_value=0.0) # 打印结果 print(one_hot) ``` 输出: ``` tf.Tensor( [[5. 0. 0.] [0. 0. 5.] [0. 5. 0.]], shape=(3, 3), dtype=float32) ``` 在这个例子中,`on_value` 被设置为 5.0,`off_value` 被设置为 0.0。因此,one-hot 编码中的非零值不再是默认的 1,而是 5.0。 #### 示例 3:指定 `dtype` ```python # 定义类别标签的索引 indices = [0, 2, 1] depth = 3 # 指定输出张量的数据类型为 tf.int32 one_hot = tf.one_hot(indices, depth, dtype=tf.int32) # 打印结果 print(one_hot) ``` 输出: ``` tf.Tensor( [[1 0 0] [0 0 1] [0 1 0]], shape=(3, 3), dtype=int32) ``` 在这个例子中,`dtype` 被设置为 `tf.int32`,因此输出张量的数据类型为整数类型。 ### 注意事项 - `indices` 中的值必须在 `[0, depth)` 范围内,否则会引发错误。如果 `indices` 中包含负数,`tf.one_hot` 会将其视为无效索引,并生成一个全零的 one-hot 向量。 - `axis` 参数控制 one-hot 向量的插入位置。默认情况下,one-hot 向量会插入到最后一个轴上。 ### 总结 `tf.one_hot` 是一个非常有用的函数,特别是在处理分类任务时,可以方便地将类别标签转换为 one-hot 编码形式,以便于后续的模型训练和预测。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值