gpt4 book ai didi

python - 为什么tensorflow.one_hot不稀疏?

转载 作者:行者123 更新时间:2023-12-01 06:37:52 25 4
gpt4 key购买 nike

看下面的例子:

import tensorflow as tf
indices = [0, 1, 2]
depth = 3
tf.one_hot(indices, depth)

输出:

<tf.Tensor: id=9, shape=(3, 3), dtype=float32, numpy=
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]], dtype=float32)>

one-hot 张量是稠密的。我想知道这种表示是否有效,特别是如果一个类别有很多类别。那么为什么 one_hot 输出默认是密集的呢?稀疏表示不是更节省内存吗?

最佳答案

很有可能,因为如果您考虑用于分类的典型神经网络的输出,它是一个密集的似然向量。为了使优化算法修改神经网络的权重,必须计算误差向量。误差(或者实际上是平方误差)是输出的总和 - 真值(平方)。因此,以稀疏格式原生表示一种热门编码只会导致优化/反向传播操作的非稀疏化。每次训练迭代都会进行这种非稀疏化只会造成浪费。

为了解决额外的空间...确实,它需要更多的空间,但标签通常包含现代训练数据的一小部分与实际输入(图像/音频/等)更大。

我的想法遵循这样的假设:one-hot 向量用于标签……无论如何,这就是我最常使用它们的地方。

为了论证,如果您有一些与稀疏表示兼容的自定义层和输入,并且需要具有稀疏标签表示,那么一次性转换为稀疏将不会不会损害您的性能,因为使用相当快的库(例如 scipy)将是一次性(或可能是几次)成本。

关于python - 为什么tensorflow.one_hot不稀疏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59587036/

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