gpt4 book ai didi

keras - 相当于 pyTorch 中的 embeddings_regularizer

转载 作者:行者123 更新时间:2023-12-04 15:11:31 28 4
gpt4 key购买 nike

tf.keras.layers.Embedding有参数 embeddings_regularizer .在 pyTorch 或 nn.Embedding 中等价于什么?

最佳答案

PyTorch 没有直接的等效项,因为 PyTorch 仅支持 L2通过 torch.optim 对参数进行正则化优化器。
例如 torch.optim.SGDweight_decay范围。如果你设置了 您优化您的 nn.Embedding它将被 L2 正则化具有指定的强度(对于 nn.Embedding,您只能传递 weight_decay,请参阅优化器的 per-parameter-options)。
如果您想使用 L1正则化你必须:

  • 自己编码
  • 使用可用的第三方解决方案

  • 自己编码
    通常我们加 L1对损失和反向传播进行正则化,但这是一种低效的方法。
    最好用正则化的导数填充我们参数的梯度(尽管有一些边缘情况)(对于 L1 是符号值)。沿着这些路线的东西:
    import torch

    # Do this in your optimization loop AT THE TOP
    embedding = torch.nn.Embedding(150, 100)
    embedding.weight.grad = torch.sign(embedding.weight)

    # Do the rest of optimization AND clear gradients!
    ...
    虽然让它在一般情况下工作有点困难(比如批量累积等),而且 IMO 还不清楚。您可以申请 L2最重要的是。 torchlayers第三方库
    免责声明:我是这个项目的作者
    您可以安装 torchlayers-nightly并获得每层 L1L2正则化。
    通过 pip 安装:
    pip install -U torchlayers-nightly
    在您的代码中,您可以执行以下操作:
    import torchlayers as tl
    import torch

    embedding = torch.nn.Embedding(150, 100)
    regularized_embedding = tl.L1(embedding)

    # Do the rest as per usual
    这个功能现在是实验性的,但应该可以工作,我以前成功地使用过它。
    此外,您应该可以使用 tl.L2同理,见 docstrings关于这个特定层的使用。
    更多信息请查看 github repository并阅读文档 here .

    关于keras - 相当于 pyTorch 中的 embeddings_regularizer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65163143/

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