在原有网络模型基础上更改网络输出

更改现有网络模型vgg16
现以ImageNet数据集为例,神经网络选取VGG16。
vgg16 网络有1000个输出,数据集 ImageNet 有1000个类别。
想要将vgg16网络应用到其他数据集(10个类别),可以修改该网络输出。

vgg16网络模型
在这里插入图片描述
法1:直接在后面加一层

vgg16_True.add_module("add_linear",nn.Linear(1000,10))

在这里插入图片描述
法2 : 可以把新添加的层,放在classifier的框架底子,变成classifier的子集

vgg16_True.classifier.add_module("add_linear",nn.Linear(1000,10))

在这里插入图片描述

法3 :直接在classifier上修改第六层输出为10

vgg16_True.classifier[6] = nn.Linear(4096,10)

在这里插入图片描述
更改后:
N 为 batch_size
输入数据
(N,Cin ,Hin ,Win )= (N,3 ,224 ,224 )
输出数据
(N,10 )

代码:

import torch
import torchvision.datasets
from torch import nn
from torch.nn import Conv2d,MaxPool2d,Flatten,Linear,Sequential
from torch.utils.data import DataLoader
from torchvision import transforms

# 参数pretrained为True : 可以加载网络架构以及训练好的参数
# 参数pretrained为False : 只加载网络架构以及与初始化参数

# # 数据集 ImageNet  这个数据集100G  不下了  直接设置 网络的参数pretrained为True
# dataset_transform = transforms.Compose([transforms.ToTensor()])  # 数据集图片  PIL-->tensor
#
# train_set = torchvision.datasets.ImageNet(root="./dataset3",split="train",download=True,transform=dataset_transform)
# test_set = torchvision.datasets.ImageNet(root="./dataset3", split="train", download=True,transform=dataset_transform)

# # 加载数据 一次加载64张;打乱顺序;一次性创建num_worker个worker,数值越大,寻batch速度越快;剩余的64除不尽的丢弃数据
# test_loader = DataLoader(dataset=test_set, batch_size=64, shuffle=True, num_workers=0, drop_last=True)

# 加载网络模型vgg16 参数pretrained为True
vgg16_False = torchvision.models.vgg16(pretrained=False)
vgg16_True = torchvision.models.vgg16(pretrained=True)
print(vgg16_True)  # 网络输入   网络输出1000(数据集 ImageNet有1000个类别)

# 数据集 CIFAR10  有10个类别  可以改动现有vgg16网络结构,使之输出为10类
# 法1
# vgg16_True.add_module("add_linear",nn.Linear(1000,10))
# print(vgg16_True)

# # 法2  可以把新添加的层,放在classifier的框架底子,变成classifier的子集
# vgg16_True.classifier[6] = nn.Linear(4096,10)
# print(vgg16_True)

# 法3
vgg16_True.classifier[6] = nn.Linear(4096,10)
print(vgg16_True)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叶叶梓梓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值