gpt4 book ai didi

TensorFlow, tf.one_hot 为什么输出的形状由轴的值定义?

转载 作者:行者123 更新时间:2023-12-03 17:11:47 27 4
gpt4 key购买 nike

我阅读了 docs of tf.one_hot 并发现

... . The new axis is created at dimension axis (default: the new axis is appended at the end).



什么是 The new axis

If indices is a vector of length features, the output shape will be:

features x depth if axis == -1

depth x features if axis == 0



如果索引是形状为 [batch, features] 的矩阵(批次),则输出形状将为:

batch x features x depth if axis == -1

batch x depth x features if axis == 1

depth x batch x features if axis == 0



为什么输出的形状由轴定义?

最佳答案

tf.one_hot() 转换索引列表(例如 [0, 2, 1] )并将其转换为长度为 depth 的单热向量列表。

例如,如果 depth = 3

输入中的

  • 索引 0 将被替换为 [1, 0, 0]
  • 输入中的
  • 索引 1 将被替换为 [0, 1, 0]
  • 输入中的
  • 索引 2 将被替换为 [0, 0, 1]

  • 所以 [0, 2, 1] 将被编码为 [[1, 0, 0], [0, 0, 1], [0, 1, 0]]
    如您所见,输出比输入多一个维度(因为每个索引都被一个向量替换)。

    默认情况下( 和您通常需要的 ),新维度创建为最后一个,因此如果您的输入是 (d1, d2, .., dn) 形状,则您的输出将是 (d1, d2, .., dn, depth) 形状。但是,如果您更改输入参数轴,您可以选择将新维度放在其他地方,例如,如果 axis=0 您的输出将是 (depth, d1, d2, .., dn) 形状。

    改变维度的顺序基本上是转置的 n 维版本:你有相同的数据,但切换索引的顺序来访问它们(相当于切换 2D 矩阵中的列和行)。

    关于TensorFlow, tf.one_hot 为什么输出的形状由轴的值定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44887367/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com