【TensorFlow】【API】tf.one_hot()函数讲解

1.作用

⭐️ 对指定张量,进行one-hot编码,这一编码可以指定编码的维度(与传统的one-hot编码不同,传统的向量的长度取决于张量的维度数)


2.参数详解

⭐️ API形式如下

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

⭐️ 参数说明如下表:

参数名说明
indices要映射的张量
depth映射出来的维度
on_value符合时的值
off_value不符合时的值
axis要填充的维度
dtype输出张量的数据类型
name为这一操作取个名字,一般为None

⭐️ 返回值: one-hot之后的张量

⭐️ 错误如下表:

错误代码说明
TypeError如果on_value或off_value的dtype不匹配dtype
TypeError如果on_value和off_value的dtype不匹配dtype

3.举例

⭐️ 传统one-hot编码,代码如下:

a = [1, 2, 3, 4, 5]
b = tf.one_hot(a, depth=len(a))
print(b)

# 输出结果为
tf.Tensor(
[[0. 1. 0. 0. 0.]
 [0. 0. 1. 0. 0.]
 [0. 0. 0. 1. 0.]
 [0. 0. 0. 0. 1.]
 [0. 0. 0. 0. 0.]], shape=(5, 5), dtype=float32)

⭐️ 张量A 映射成 4维one-hot, 代码如下:

a = [1, 2, 3, 4, 5]
b = tf.one_hot(a, depth=4)
print(b)

# 输出结果为
tf.Tensor(
[[0. 1. 0. 0.]
 [0. 0. 1. 0.]
 [0. 0. 0. 1.]
 [0. 0. 0. 0.]
 [0. 0. 0. 0.]], shape=(5, 4), dtype=float32)

⭐️ 设置on_valueoff_valuedtype

a = [1, 2, 3, 4, 5]
b = tf.one_hot(a, depth=5, on_value=5, off_value=1, dtype="float16")
print(b)

# 输出结果为
tf.Tensor(
[[1. 5. 1. 1. 1.]
 [1. 1. 5. 1. 1.]
 [1. 1. 1. 5. 1.]
 [1. 1. 1. 1. 5.]
 [1. 1. 1. 1. 1.]], shape=(5, 5), dtype=float16)

⭐️ 指定映射维度axis

a = [[1, 2, 3, 4, 5], [1, 2, 3, 4, 5]]
b = tf.one_hot(a, depth=5,axis=1, dtype="float16")
print(b)

# 输出结果为
tf.Tensor(
[[[0. 0. 0. 0. 0.]
  [1. 0. 0. 0. 0.]
  [0. 1. 0. 0. 0.]
  [0. 0. 1. 0. 0.]
  [0. 0. 0. 1. 0.]]

 [[0. 0. 0. 0. 0.]
  [1. 0. 0. 0. 0.]
  [0. 1. 0. 0. 0.]
  [0. 0. 1. 0. 0.]
  [0. 0. 0. 1. 0.]]], shape=(2, 5, 5), dtype=float16)

4.总结

⭐️ 在缩小映射维度时,有些数据并不能用one-hot进行表征

⭐️ 在指定映射维度时,要注意想要映射的维度,以免造成意想不到的结果


5.参考资料

📗 1. 官方说明文档: tf.one_hot

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值