Say that I want a model looks like y=A*x where X is a matrix and * is element wise product. How can I construct a tranable A?
Thank you very much
Revise:I want y=(A*B) * x where x is a vector as one input and A is a matrix as another input and B is the trainable elementwise product matrix I desire. So far, I did :
self.net = nn.Sequential(A, )
And I am confused how to step forward.
Hi @WeiHao97,
If I understand correctly you want to train your model w.r.t. B
, the learning parameter matrix.
class Network(nn.Module):
def __init__(self, shape):
super().__init__()
self.B = nn.Parameter(torch.zeros(shape))
torch.nn.init.xavier_uniform_(self.B) #or any other init method
def forward(self, x, A):
M = A*self.B
return x @ M.t()
shape
has to be (output_dim, input_dim)
. input_dim
being the dim of x
.
Hope this is what you wanted to do.
1 Like