gpt4 book ai didi

neural-network - 为什么 PyTorch 中的嵌入实现为稀疏层?

转载 作者:行者123 更新时间:2023-12-01 00:22:02 24 4
gpt4 key购买 nike

Embedding PyTorch 中的层列在“稀疏层”下,但有以下限制:

Keep in mind that only a limited number of optimizers support sparse gradients: currently it’s optim.SGD (cuda and cpu), and optim.Adagrad (cpu)



这是什么原因?例如,在 Keras 中,我可以使用任何优化器训练带有嵌入层的架构。

最佳答案

仔细检查后,嵌入的稀疏梯度是可选的,可以使用 sparse 打开或关闭。范围:

class torch.nn.Embedding(num_embeddings, embedding_dim, padding_idx=None, max_norm=None, norm_type=2, scale_grad_by_freq=False, sparse=False)



在哪里:

sparse (boolean, optional) – if True, gradient w.r.t. weight matrix will be a sparse tensor. See Notes for more details regarding sparse gradients.



提到的“注释”是我在关于支持稀疏梯度的有限数量的优化器的问题中引用的内容。

更新:

在稀疏梯度上实现一些优化方法在理论上是可行的,但技术上很难。有一个 open issue在 PyTorch 存储库中添加对所有优化器的支持。

关于原始问题,我相信 Embeddings 可以被视为稀疏,因为可以直接对输入索引进行操作,而不是将它们转换为单热编码以输入到密集层。这在 @Maxim's 中有解释回复我的 related question .

关于neural-network - 为什么 PyTorch 中的嵌入实现为稀疏层?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47868341/

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