for name, m in mdl.named_children():
print(name)
print(m.parameters())
参考文献:
# https://discuss.pytorch.org/t/how-to-get-the-module-names-of-nn-sequential/39682
# looping through modules but get the one with a specific name
import torch
import torch.nn as nn
from collections import OrderedDict
params = OrderedDict([
('fc0', nn.Linear(in_features=4,out_features=4)),
('ReLU0', nn.ReLU()),
('fc1L:final', nn.Linear(in_features=4,out_features=1))
])
mdl = nn.Sequential(params)
# throws error
# mdl['fc0']
for m in mdl.children():
print(m)
print()
for m in mdl.modules():
print(m)
print()
for name, m in mdl.named_modules():
print(name)
print(m)
print()
for name, m in mdl.named_children():
print(name)
print(m)
5条答案
按热度按时间ulmd4ohb1#
假设你有下面的神经网络。
现在,让我们打印与每个NN层相关联的权重参数的大小。
输出:
我希望您可以扩展该示例以满足您的需要。
nuypyhwy2#
假设
m
是你的模块,那么你可以这样做:6ss1mwsb3#
可以使用
children
方法:或者,如果你想flatten
Sequential
layers:lyr7nygr4#
你可以简单地使用
model.named_parameters()
获取它,它将返回一个生成器,你可以迭代它并获取Tensor,它的名称等。以下是resnet预训练模型的代码:
这将输出
您可以在how-to-manipulate-layer-parameters-by-its-names/中找到有关此主题的一些讨论
dm7nw8vv5#
你也可以这样做:
参考文献: