Я пытаюсь реализовать следующий график.Как вы можете видеть, нейроны не полностью связаны, то есть веса замаскированы и их соответствующие градиенты.
import torch
import numpy as np
x = torch.rand((3, 1))
# tensor([[ 0.8525],
# [ 0.1509],
# [ 0.9724]])
weights = torch.rand((2, 3), requires_grad=True)
# tensor([[ 0.3240, 0.0792, 0.6858],
# [ 0.5248, 0.4565, 0.3625]])
mask = torch.Tensor([[0,1,0],[1,0,1]])
# tensor([[ 0., 1., 0.],
# [ 1., 0., 1.]])
mask_weights = weights * mask
# tensor([[ 0.0000, 0.0792, 0.0000],
# [ 0.5248, 0.0000, 0.3625]])
y = torch.mm(mask_weights, x)
# tensor([[ 0.0120],
# [ 0.7999]])
ЭтоВопрос изначально размещен на Pytorch Forum .Обратите внимание на вышеприведенный способ
mask_weights = weights * mask
НЕ подходит, так как соответствующие градиенты не равны 0.
IsЕсть ли элегантный способ сделать это, пожалуйста?
Спасибо заранее.