一个使用张量流的热编码
原文:https://www.geesforgeks.org/one-hot-encoding-use-tensorflow/
在这篇文章中,我们将看到如何用全 0 或全 1 初始化张量流中的向量。你要调用的功能是tf.ones()
。要用零初始化,可以用tf.zeros()
代替。这些函数取一个形状,并相应地返回一个满是 0 和 1 的数组。
代码:
import tensorflow as tf
ones_matrix = tf.ones([2, 3])
sess = tf.Session()
ones = sess.run(ones_matrix)
sess.close()
print(ones)
输出:
[[1\. 1\. 1.] [1\. 1\. 1.]]
使用 One Hot Encoding: 在深度学习和一般向量计算中,你会得到一个 y 向量,其数字范围从 0 到 C-1,你想要进行以下转换。例如,如果 C 是 5,那么你可能有下面的 y 向量,你需要转换如下:
一个热门编码示例
这可以通过以下方式实现:
传递给函数的参数:
指数:指数张量。 深度:定义一维深度的标量。 on_value: 定义索引[j] = i 时填写输出的值的标量(默认:1) off_value: 定义索引[j]时填写输出的值的标量!= i(默认:0) 轴:要填充的轴(默认:-1,新的最内部轴)。 数据类型:输出张量的数据类型。 名称:操作的名称(可选)。
代码:
indices = [1, 4, 2, 0, 3]
C = tf.constant(5, name = "C")
one_hot_matrix = tf.one_hot(
indices, C, on_value = 1.0, off_value = 0.0, axis =-1)
sess = tf.Session()
one_hot = sess.run(one_hot_matrix)
sess.close()
# output is of dimension 5 x 5
print(one_hot)
输出:
[[0.0, 1.0, 0.0, 0.0, 0.0 ]
[0.0, 0.0, 0.0, 0.0, 1.0]
[0.0, 0.0, 1.0, 0.0, 0.0]
[1.0, 0.0, 0.0, 0.0, 0.0]
[0.0, 0.0, 0.0, 1.0, 0.0]]
随意改变价值观,看看结果。
代码:
indices = [[0, 2], [1, -1]]
C = tf.constant(5, name = "C")
one_hot_matrix = tf.one_hot(
indices, C, on_value = 1.0, off_value = 0.0, axis =-1)
sess = tf.Session()
one_hot = sess.run(one_hot_matrix)
sess.close()
# output is of dimension 2 x 2 x 3
print(one_hot)
输出:
[[[1.0, 0.0, 0.0],
[0.0, 0.0, 1.0]],
[[0.0, 1.0, 0.0],
[0.0, 0.0, 0.0]]]