获取pytorch模型并获得所有层的列表而不进行任何nn.Sequence
分组的最简单的方法是什么?例如,更好的方法是什么?
import pretrainedmodels
def unwrap_model(model):
for i in children(model):
if isinstance(i, nn.Sequential): unwrap_model(i)
else: l.append(i)
model = pretrainedmodels.__dict__['xception'](num_classes=1000, pretrained='imagenet')
l = []
unwrap_model(model)
print(l)
7条答案
按热度按时间ki1q1bka1#
你可以使用
modules()
方法迭代模型的所有模块(包括每个Sequential
中的模块)。bd1hkmkf2#
我为一个更深层次的模型计算了它,并不是所有的块都来自nn.sequential。
zd287kbt3#
如果你想把图层放在一个名为
dict
的地方,这是最简单的方法:这将返回类似于以下内容的结果:
示例:
jmp7cifd4#
我是这样做的:
vaj7vani5#
如果您想要一个以名称作为键,以模块作为值的嵌套字典,例如:
你可以把Kees和Mayukh Deb的答案结合起来得到:
798qvoo86#
这是我的方法,通常可以在这里输入任何模型,它将返回一个所有torch.nn. * 的列表
nmpmafwu7#
扩展Ivan的答案https://stackoverflow.com/a/69544742/429476
ResNet50的结果