pytorch 实现在预训练模型的 input上增减通道

yipeiwu_com7年前Python基础

如何把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 = 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, torch.zeros(64, 1, 7, 7)), dim=1))
 
 
#单通道输入
layers[0] = nn.Conv2d(1, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), bias=False)
layers[0].weight = torch.nn.Parameter(w[:, :1, :, :])

以上这篇pytorch 实现在预训练模型的 input上增减通道就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

Python入门篇之字符串

所有标准的序列操作对字符串都适用,但字符串是不可变的 字符串常量: 单引号:‘spa"m' 双引号:"spa'm" 三引号:'''...spam...''',"""...spam..."...

python编写朴素贝叶斯用于文本分类

python编写朴素贝叶斯用于文本分类

朴素贝叶斯估计 朴素贝叶斯是基于贝叶斯定理与特征条件独立分布假设的分类方法。首先根据特征条件独立的假设学习输入/输出的联合概率分布,然后基于此模型,对给定的输入x,利用贝叶斯定理求出后验...

基于numpy.random.randn()与rand()的区别详解

numpy 中有一些常用的用来产生随机数的函数,randn()和rand()就属于这其中。 numpy.random.randn(d0, d1, …, dn) 是从标准正态分布中返回一个...

Python pass详细介绍及实例代码

Python pass的用法: 空语句 do nothing 保证格式完整 保证语义完整 以if语句为例,在c或c++/Java中: if(true) ; //do...

Python使用Turtle库绘制一棵西兰花

Turtle库是Python中一个强大的绘制图像的函数库,灵活使用Turtle库可以绘制各种好看的图像。 下面介绍使用Turtle库绘制一棵西兰花。 绘制一棵西兰花,从主干出发以一定的角...