美文网首页
深度学习查看模型及参数

深度学习查看模型及参数

作者: zeolite | 来源:发表于2021-06-08 12:46 被阅读0次

    做个笔记
    用预训练好的vgg16举个例子

    from torch import nn
    from torchvision import models
    
    vgg=models.vgg16(pretrained=True)
    

    打印vgg模型

    VGG(
      (features): Sequential(
        (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
        (1): ReLU(inplace=True)
        (2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
        (3): ReLU(inplace=True)
        (4): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
        (5): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
        (6): ReLU(inplace=True)
        (7): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
        (8): ReLU(inplace=True)
        (9): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
        (10): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
        (11): ReLU(inplace=True)
        (12): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
        (13): ReLU(inplace=True)
        (14): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
        (15): ReLU(inplace=True)
        (16): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
        (17): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
        (18): ReLU(inplace=True)
        (19): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
        (20): ReLU(inplace=True)
        (21): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
        (22): ReLU(inplace=True)
        (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
        (24): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
        (25): ReLU(inplace=True)
        (26): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
        (27): ReLU(inplace=True)
        (28): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
        (29): ReLU(inplace=True)
        (30): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
      )
      (avgpool): AdaptiveAvgPool2d(output_size=(7, 7))
      (classifier): Sequential(
        (0): Linear(in_features=25088, out_features=4096, bias=True)
        (1): ReLU(inplace=True)
        (2): Dropout(p=0.5, inplace=False)
        (3): Linear(in_features=4096, out_features=4096, bias=True)
        (4): ReLU(inplace=True)
        (5): Dropout(p=0.5, inplace=False)
        (6): Linear(in_features=4096, out_features=1000, bias=True)
      )
    )
    

    查看features

    vgg.features
    

    查看具体一层

    vgg.features[0]
    #返回第0层 
    #Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    

    查看classifier

    vgg.classifier
    

    取前n层

    vgg.classifier[:4]
    #返回前4层
    #Sequential(
    # (0): Linear(in_features=25088, out_features=4096, #bias=True)
    #(1): ReLU(inplace=True)
    #(2): Dropout(p=0.5, inplace=False)
    #(3): Linear(in_features=4096, out_features=4096, #bias=True)
    #)
    

    查看模型权重参数

    vgg.state_dict()
    

    获取vgg模型的参数名和参数值

    for name in vgg.state_dict():
        #name是参数名,通过name找value
        value=vgg.state_dict()[name]
        print(name, value)
    

    设置前10层参数不参与学习

    for layer in vgg.features[:10]:
        for param in layer.parameters():
            param.requires_grad=False
            print(param.requires_grad)
    

    相关文章

      网友评论

          本文标题:深度学习查看模型及参数

          本文链接:https://www.haomeiwen.com/subject/icideltx.html