Pytorch, 텐서에 normal distribution 덧셈 질문

안녕하세요.
저는 Pytorch 1.10.2 버전을 사용 중입니다.

Neural networks 학습 중, Adam optimizer에 쓰이는 grad tensor에 torch.normal을 통해서 normal distribution 값을 추가하고 싶습니다.
이때 grad tensor의 크기는 모두 다른데 어떤 식으로 grad tensor에 normal distribution 값을 추가하는 게 좋을까요?

여러분의 조언을 구합니다!

좋아요 1

grad tensor 값을 변경하고 싶으면 아래와 비슷하게 수정할 수 있습니다~

import torch

model = torch.nn.Linear(in_features = 3, out_features = 5)
adam = torch.optim.Adam(params=model.parameters())
adam.zero_grad()

inp = torch.rand(3, 3)
oup = model(inp)
loss = oup.sum()
loss.backward()

for param in model.parameters():
    # 이부분을 수정
    noise = torch.rand_like(param)
    print("grad before: ", param.grad)
    param.grad.detach().add_(noise)
    print("grad after: ", param.grad)

adam.step()
좋아요 2