pytorch 修改预训练model实例
我就废话不多说了,直接上代码吧!
class Net(nn.Module): def __init__(self , model): super(Net, self).__init__() #取掉model的后两层 self.resnet_layer = nn.Sequential(*list(model.children())[:-2]) self.transion_layer = nn.ConvTranspose2d(2048, 2048, kernel_size=14, stride=3) self.pool_layer = nn.MaxPool2d(32) self.Linear_layer = nn.Linear(2048, 8) def forward(self, x): x = self.resnet_layer(x) x = self.transion_layer(x) x = self.pool_layer(x) x = x.view(x.size(0), -1) x = self.Linear_layer(x) return x
resnet = models.resnet50(pretrained=True) model = Net(resnet)
以上这篇pytorch 修改预训练model实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
PyTorch实现AlexNet示例
PyTorch: https://github.com/shanglianlm0525/PyTorch-Networks import torch import torch.nn as nn import torchvision class AlexNet(nn.Module): def __init__(self,num_classes=1000): super(AlexNet,self).__init__() self.feature_extraction = nn.Sequential(
-
使用pytorch搭建AlexNet操作(微调预训练模型及手动搭建)
本文介绍了如何在pytorch下搭建AlexNet,使用了两种方法,一种是直接加载预训练模型,并根据自己的需要微调(将最后一层全连接层输出由1000改为10),另一种是手动搭建. 构建模型类的时候需要继承自torch.nn.Module类,要自己重写__ \_\___init__ \_\___方法和正向传递时的forward方法,这里我自己的理解是,搭建网络写在__ \_\___init__ \_\___中,每次正向传递需要计算的部分写在forward中,例如把矩阵压平之类的. 加载预训练ale
-
PyTorch加载预训练模型实例(pretrained)
使用预训练模型的代码如下: # 加载预训练模型 resNet50 = models.resnet50(pretrained=True) ResNet50 = ResNet(Bottleneck, [3, 4, 6, 3], num_classes=2) # 读取参数 pretrained_dict = resNet50.state_dict() model_dict = ResNet50.state_dict() # 将pretained_dict里不属于model_dict的键剔除掉 pret
-
pytorch 实现在预训练模型的 input上增减通道
如何把imagenet预训练的模型,输入层的通道数随心所欲的修改,从而来适应自己的任务 #增加一个通道 w = layers[0].weight layers[0] = nn.Conv2d(4, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), bias=False) layers[0].weight = torch.nn.Parameter(torch.cat((w, w[:, :1, :, :]), dim=1)) #方式2 w =
-
pytorch载入预训练模型后,实现训练指定层
1.有了已经训练好的模型参数,对这个模型的某些层做了改变,如何利用这些训练好的模型参数继续训练: pretrained_params = torch.load('Pretrained_Model') model = The_New_Model(xxx) model.load_state_dict(pretrained_params.state_dict(), strict=False) strict=False 使得预训练模型参数中和新模型对应上的参数会被载入,对应不上或没有的参数被抛弃. 2.
-
pytorch 修改预训练model实例
我就废话不多说了,直接上代码吧! class Net(nn.Module): def __init__(self , model): super(Net, self).__init__() #取掉model的后两层 self.resnet_layer = nn.Sequential(*list(model.children())[:-2]) self.transion_layer = nn.ConvTranspose2d(2048, 2048, kernel_size=14, stride=3)
-
pytorch 在网络中添加可训练参数,修改预训练权重文件的方法
实践中,针对不同的任务需求,我们经常会在现成的网络结构上做一定的修改来实现特定的目的. 假如我们现在有一个简单的两层感知机网络: # -*- coding: utf-8 -*- import torch from torch.autograd import Variable import torch.optim as optim x = Variable(torch.FloatTensor([1, 2, 3])).cuda() y = Variable(torch.FloatTensor([4,
-
解决Keras自带数据集与预训练model下载太慢问题
keras的数据集源码下载地址太慢.尝试过修改源码中的下载地址,直接报错. 从源码或者网络资源下好数据集,下载好以后放到目录 ~/.keras/datasets/ 下面. 其中:cifar10需要改文件名为cifar-10-batches-py.tar.gz ,cifar100改为 cifar-100-python.tar.gz , mnist改为 mnist.npz 预训练models放到 ~/.keras/models/ 路径下面即可. 补充知识:Keras下载的数据集以及预训练模型
-
解决Pytorch修改预训练模型时遇到key不匹配的情况
一.Pytorch修改预训练模型时遇到key不匹配 最近想着修改网络的预训练模型vgg.pth,但是发现当我加载预训练模型权重到新建的模型并保存之后. 在我使用新赋值的网络模型时出现了key不匹配的问题 #加载后保存(未修改网络) base_weights = torch.load(args.save_folder + args.basenet) ssd_net.vgg.load_state_dict(base_weights) torch.save(ssd_net.state_dict(),
-
pytorch fine-tune 预训练的模型操作
之一: torchvision 中包含了很多预训练好的模型,这样就使得 fine-tune 非常容易.本文主要介绍如何 fine-tune torchvision 中预训练好的模型. 安装 pip install torchvision 如何 fine-tune 以 resnet18 为例: from torchvision import models from torch import nn from torch import optim resnet_model = models.resne
-
python PyTorch预训练示例
前言 最近使用PyTorch感觉妙不可言,有种当初使用Keras的快感,而且速度还不慢.各种设计直接简洁,方便研究,比tensorflow的臃肿好多了.今天让我们来谈谈PyTorch的预训练,主要是自己写代码的经验以及论坛PyTorch Forums上的一些回答的总结整理. 直接加载预训练模型 如果我们使用的模型和原模型完全一样,那么我们可以直接加载别人训练好的模型: my_resnet = MyResNet(*args, **kwargs) my_resnet.load_state_dict(
-
PyTorch预训练的实现
前言 最近使用PyTorch感觉妙不可言,有种当初使用Keras的快感,而且速度还不慢.各种设计直接简洁,方便研究,比tensorflow的臃肿好多了.今天让我们来谈谈PyTorch的预训练,主要是自己写代码的经验以及论坛PyTorch Forums上的一些回答的总结整理. 直接加载预训练模型 如果我们使用的模型和原模型完全一样,那么我们可以直接加载别人训练好的模型: my_resnet = MyResNet(*args, **kwargs) my_resnet.load_state_dict(
-
Pytorch修改ResNet模型全连接层进行直接训练实例
之前在用预训练的ResNet的模型进行迁移训练时,是固定除最后一层的前面层权重,然后把全连接层输出改为自己需要的数目,进行最后一层的训练,那么现在假如想要只是把 最后一层的输出改一下,不需要加载前面层的权重,方法如下: model = torchvision.models.resnet18(pretrained=False) num_fc_ftr = model.fc.in_features model.fc = torch.nn.Linear(num_fc_ftr, 224) model =
-
关于pytorch多GPU训练实例与性能对比分析
以下实验是我在百度公司实习的时候做的,记录下来留个小经验. 多GPU训练 cifar10_97.23 使用 run.sh 文件开始训练 cifar10_97.50 使用 run.4GPU.sh 开始训练 在集群中改变GPU调用个数修改 run.sh 文件 nohup srun --job-name=cf23 $pt --gres=gpu:2 -n1 bash cluster_run.sh $cmd 2>&1 1>>log.cf50_2GPU & 修改 –gres=gpu:
-
Pytorch Mac GPU 训练与测评实例
目录 正文 加速原理 环境配置 跑一个MNIST 跑一下VAE模型 一个愿景 正文 Pytorch的官方博客发了Apple M1 芯片 GPU加速的文章,这是我期待了很久的功能,因此很兴奋,立马进行测试,结论是在MNIST上,速度与P100差不多,相比CPU提速1.7倍.当然这只是一个最简单的例子,不能反映大部分情况.这里详细记录操作的一步步流程,如果你也感兴趣,不妨自己上手一试. 加速原理 苹果有自己的一套GPU实现API Metal,而Pytorch此次的加速就是基于Metal,具体来说,使
随机推荐
- jquery中如何获得服务器控件实现思路
- Mysql常用命令 详细整理版
- 详解SpringBoot 使用Spring Initializr 快速构建工程(官方推荐)
- 解读ASP.NET 5 & MVC6系列教程(10):Controller与Action
- 使用JS轻松实现ionic调用键盘搜索功能(超实用)
- C# 调用API函数弹出映射网络驱动器对话框问题
- PHP中的use关键字及文件的加载详解
- Bootstrap树形组件jqTree的简单封装
- JQuery AJAX 中文乱码问题解决
- shell对比文件内容脚本分享
- python解析xml文件实例分享
- Linux下局域网流量统计
- jQuery 判断元素上是否绑定了事件
- 解决ztree搜索中多级菜单展示不全问题
- Android编程简单设置ListView分割线的方法
- C#中调用命令行cmd开启wifi热点的实例代码
- 详解Spring Boot中使用AOP统一处理Web请求日志
- c++ 预处理之正整型实现方法
- 我们的红色联盟为您提供100M免费PHP空间服务.
- 用python实现的线程池实例代码