0
点赞
收藏
分享

微信扫一扫

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

十里一走马 2022-01-09 阅读 74

文章目录

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

举报

相关推荐

0 条评论