pytorch的model.parameters(),model.children(),model.modules(),model.named_parameters(),...

1、关于model.parameters()、model.children()、model.modules()、model.named_parameters()、model.named_children()、model.named_modules()的实验

import torchvision
import torch
model = torchvision.models.resnet18(pretrained=True)

print("-------------------------------------------------")
print(model)  # 打印模型结构
print("-------------------------------------------------")
for param in model.parameters():
     print(param)  # 打印所有参数
print("-------------------------------------------------")
for name, param in model.named_parameters():
     print(name, param)  # 打印参数层名称、打印所有参数
print("-------------------------------------------------")


for module in model.children():
     print(module)  # 打印网络第一代子模块
print("-------------------------------------------------")
for name, module in model.named_children():
     print(name, module)  # 打印模块名称 网络第一代子模块
print("-------------------------------------------------")


for module in model.modules():
     print(module)  # 打印模块
print("-------------------------------------------------")
for name, module in model.named_modules():
     print([name, module])  # 打印模块名称 模块
print("-------------------------------------------------")

print(model.state_dict())  # model.state_dict() 返回一个有序字典
print(model.state_dict().keys())  # 模型有权重层的名字
torch.save(model.state_dict(), "./weight.pth")
print("-------------------------------------------------")

weight = torch.load("./weight.pth")  # weight 是一个有序字典
print(weight)
# print("-------------------------------------------------")
for k, v in weight.items():
    print(k)

总结:

torch.save()
net.state_dict()----有序字典 “参数层名称”:参数值

torch.load()----有序字典 “参数层名称”:参数值
load_state_dict(param_dict,strict=False)

dict.keys()----返回字典所有key值
dict.items()---- 函数以列表返回可遍历的(,) 元组数组[(key,value),………. (key,value)]
tensor.item()----returns the value of this tensor as a standard Python number

np.reshape(array,newshape)----newshape:int,list or tuple   若为-1,则该维度自动推理

net.named_parameters()
net.parameters()

named_children()----返回的是子模块的迭代器,可用list包裹转成列表
named_modules()----返回的是所有模块的迭代器
net.children()  返回网络模块的第一代子模块,可用list包裹转成列表,常用于基于现有网络结构构建新的网络结构,如:backbone=nn.Sequential(*list(net.children())[:-3])
net.modules()  返回网络模块的自己本身和所有后代模块

net.网络参数层名称    如:net.features.conv.weight
net.网络模块   如:net.features

详细说明可参考这篇博客

你可能感兴趣的:(Pytorch,pytorch,人工智能)