我正在尝试学习具有自定义渐变功能的嵌入。基本上,我有一个嵌入
my_embedding = torch.nn.Embedding(
num_embeddings=n,
embedding_dim=d)
和一个优化器,例如
my_optimizer = torch.optim.SGD(
my_embedding.parameters(),
lr=0.01)
我正在手动计算一些梯度(在下面表示为my_gradient
),并且正在做my_embedding.weight.grad = my_gradient
。
但是,当我执行my_optimizer.step()
时,它不会更新任何内容。
我想念什么吗? (在这种情况下,我可以直接跳过优化器,但我想了解为什么它不起作用)