使用 TensorFlow 的一种热编码
在这篇文章中,我们将看到如何在 TensorFlow 中使用全零或一来初始化向量。您将调用的函数是tf.ones()
。要使用零初始化,您可以使用tf.zeros()
代替。这些函数采用一个形状并相应地返回一个充满零和一的数组。
代码:
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.]]
使用一种热编码:
很多时候,在深度学习和一般向量计算中,您将拥有一个数字范围从 0 到 C-1 的向量,并且您想要进行以下转换。如果 C 是例如 5,那么您可能有以下 y 向量,您需要将其转换如下:
这可以按如下方式完成:
传递给函数的参数:
indices: A Tensor of indices.
depth: A scalar defining the depth of the one hot dimension.
on_value: A scalar defining the value to fill in output when indices[j] = i. (default : 1)
off_value: A scalar defining the value to fill in output when indices[j] != i. (default : 0)
axis: The axis to fill (default : -1, a new inner-most axis).
dtype: The data type of the output tensor.
name: A name for the operation (optional).
代码:
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]]]