import torch
import torch.nn as nn
class MyNet(torch.nn.Module):
def __init__(self):
super(MyNet, self).__init__()
self.layer = nn.Linear(10, 10)
self.parameter = torch.nn.Parameter(torch.zeros(10,10, requires_grad=True))
net = MyNet()
print(net)
Ouput is
MyNet(
(layer): Linear(in_features=10, out_features=10, bias=True)
)
1 Like
You could print all parameters of the model via:
print(list(net.parameters()))
# or
print(dict(net.named_parameters()))
I want parameters to come in this command print(net)
This is more interpretable that others
In that case you could override the extra_repr
method for the module.
class MyNet(torch.nn.Module):
def __init__(self):
super(MyNet, self).__init__()
self.layer = nn.Linear(10, 10)
self.parameter1 = torch.nn.Parameter(torch.zeros(10,10, requires_grad=True))
self.parameter2 = torch.nn.Parameter(torch.zeros(10,10, requires_grad=True))
def extra_repr(self) -> str:
named_modules = set()
for p in net.named_modules():
named_modules.update([p[0]] )
named_modules = list(named_modules)
string_repr = ''
for p in net.named_parameters():
name = p[0].split('.')[0]
if name not in name_modules:
string_repr = string_repr + '('+ name +'): ' \
+'tensor(' + str(tuple(p[1].shape))+ ', requires_grad='+ str(p[1].requires_grad) +')\n'
return string_repr
net = MyNet()
print(net)
Output is
MyNet(
(parameter1): tensor((10, 10), requires_grad=True)
(parameter2): tensor((10, 10), requires_grad=True)
(layer): Linear(in_features=10, out_features=10, bias=True)
)
Is there a better automated version that this?