任何人都可以帮助解释 axis
TensorFlow
one_hot
功能?
根据 文档:
axis:要填充的轴(默认值:-1,一个新的最里面的轴)
不确定上下文是否同样适用。
原文由 tinonetic 发布,翻译遵循 CC BY-SA 4.0 许可协议
任何人都可以帮助解释 axis
TensorFlow
one_hot
功能?
根据 文档:
axis:要填充的轴(默认值:-1,一个新的最里面的轴)
不确定上下文是否同样适用。
原文由 tinonetic 发布,翻译遵循 CC BY-SA 4.0 许可协议
对我来说 axis 翻译为“你在哪里添加额外的数字来增加维度”。至少这是我解释它并作为助记符的方式。
例如,您有 [1,2,3,0,2,1],这是形状 (1,6)。这意味着它是一个一维数组。 one_hot 添加零并将原始数组的每个位置的位置转换为 1,为此,原始数组的维度必须比原始数组多 1,轴告诉函数添加它的位置, 这个新维度将标识例子。
您添加第二个维度并保留第一个维度。这将导致 (6,4) 数组。因此,对于生成的数组,您使用第一个维度 (0) 来了解您看到的是哪个示例,使用第二个维度(1,新的)来了解该类是否处于活动状态。 newArr[0][1]=1 表示示例 0,类 1,在这种情况下表示示例 0 属于类 1。
0 1 2 3 <- class
[[ 0. 1. 0. 0.] <- example 0
[ 0. 0. 1. 0.] <- example 1
[ 0. 0. 0. 1.] <- example 2
[ 1. 0. 0. 0.] <- example 3
[ 0. 0. 1. 0.] <- example 4
[ 0. 1. 0. 0.]] <- example 5
您添加第一个维度,现有维度被移动。这将产生一个 (4,6) 数组。因此,对于生成的数组,您使用第一个维度(0,新维度)来了解该类是否处于活动状态,并使用第二个维度 (1) 来了解您看到的是哪个示例。 newArr[0][1]=0 表示类 0,示例 1,在这种情况下表示示例 1 不属于类 0。
0 1 2 3 4 5 <- example
[[ 0. 0. 0. 1. 0. 0.] <- class 0
[ 1. 0. 0. 0. 0. 1.] <- class 1
[ 0. 1. 0. 0. 1. 0.] <- class 2
[ 0. 0. 1. 0. 0. 0.]] <- class 3
原文由 loco.loop 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是一个例子:
… 是输入张量和
N=4
(每个索引都转换为 4D 向量)。axis=-1
计算
one_hot_1 = tf.one_hot(x, 4).eval()
产生一个(3, 4)
张量:…最后一个维度是单热编码的(清晰可见)。这个对应默认的
axis=-1
,即 最后 一个。axis=0
现在,计算
one_hot_2 = tf.one_hot(x, 4, axis=0).eval()
产生一个(4, 3)
张量,它不能立即识别为单热编码:这是因为 one-hot 编码是沿着 0 轴完成的,必须转置矩阵才能看到之前的编码。当输入的维数更高时,情况变得更加复杂,但想法是一样的:不同之处在于用于单热编码的 额外 维数的放置。