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 = nn.DataParallel(model, device_ids=config.gpus).to(device)

首先模型结构是必须要传入的,然后把最后一层的输出改为自己所需的数目

原文地址:https://www.cnblogs.com/yqpy/p/11497290.html

时间: 2024-07-30 21:33:13

Pytorch修改ResNet模型全连接层进行直接训练的相关文章

resnet18全连接层改成卷积层

想要尝试一下将resnet18最后一层的全连接层改成卷积层看会不会对网络效果和网络大小有什么影响 1.首先先对train.py中的更改是: train.py代码可见:pytorch实现性别检测 # model_conv.fc = nn.Linear(fc_features, 2)这是之前的写法 model_conv.fc = nn.Conv2d(fc_features, 2, 1) print(model_conv.fc) 但是运行的时候出错: 1) RuntimeError: Expected

理解为什么要将全连接层转化为卷积层

理解为什么要将全连接层转化为卷积层 1.全连接层可以视作一种特殊的卷积 考虑下面两种情况: 特征图和全连接层相连,AlexNet经过五次池化后得到7*7*512的特征图,下一层全连接连向4096个神经元,这个过程可以看做有4096个7*7*512的卷积核和7*7*512的特征图进行卷积操作,最终得到1*1*4096的特征图,等价与全连接得到4096个神经元. 全连接层和全连接层相连,AlexNet的再下一层依然是4096个神经元,即4096个神经元和4096个神经元全连接,由(1)我们得到了1*

深度学习系列(2) | Global Average Pooling是否可以替代全连接层?

深度学习系列 | Global Average Pooling是否可以替代全连接层? Global Average Pooling(简称GAP,全局池化层)技术最早提出是在这篇论文(第3.2节)中,被认为是可以替代全连接层的一种新技术.在keras发布的经典模型中,可以看到不少模型甚至抛弃了全连接层,转而使用GAP,而在支持迁移学习方面,各个模型几乎都支持使用Global Average Pooling和Global Max Pooling(GMP). 然而,GAP是否真的可以取代全连接层?其背

【转】Caffe源码阅读(1) 全连接层

原作者:在路上 原文链接:http://zhangliliang.com/2014/09/15/about-caffe-code-full-connected-layer/ 今天看全连接层的实现.主要看的是https://github.com/BVLC/caffe/blob/master/src/caffe/layers/inner_product_layer.cpp 主要是三个方法,setup,forward,backward setup 初始化网络参数,包括了w和b forward 前向传播

全连接层分类的原理

全连接层就是把前面经过卷积.激励.池化后的图像元素一个接一个串联在一起,作为判决的投票值,最终得出判决结果.下面的一组图是大神的可视化讲解: 组成卷积神经网络,通过特征提取和学习得到标签的置信值,最终得出分类结果. 原文地址:https://www.cnblogs.com/inception6-lxc/p/9939691.html

神经网络之全连接层(线性层)

对于神经网络的全连接层,前面已经使用矩阵的运算方式实现过,本篇将引入tensorflow中层的概念, 正式使用deep learning相关的API搭建一个全连接神经网络.下面是全连接神经网络的结构图 其中,x1,x2,x3为输入,a1,a2,a3为输出,运算关系如下: x1,x2,x3所在的层叫神经网络的输入层,a1,a2,a3所在的层叫神经网络的输出层,如果两层中间还有若干层,那么中间的这些层叫做隐藏层. 那么,如何使用tensorflow去创建这样的层呢?其实非常简单,只需要调用tf.ke

Fully Connected Layer:全连接层

1. 全连接层:主要用于分类,把分布式特征映射到样本标记空间.全连接层的每一个结点都与上一层的所有结点相连,用来把前边提取到的特征综合起来.全连接层中的权值矩阵Wi的每一行相当于一个分类模版,xi与Wi矩阵乘法,即可得到xi与每一个模板的匹配度,从中选取得分最高的匹配模板. 在 CNN 结构中,经多个卷积层和池化层后,连接着1个或1个以上的全连接层.全连接层中的每个神经元与其前一层的所有神经元进行全连接,全连接层可以整合卷积层或者池化层中具有类别区分性的局部信息.为了提升 CNN 网络性能,全连

Tensorflow 池化层(pooling)和全连接层(dense)

一.池化层(pooling) 池化层定义在 tensorflow/python/layers/pooling.py. 有最大值池化和均值池化. 1. 最大池化层 tf.layers.max_pooling2d max_pooling2d( inputs, pool_size, strides, padding='valid', data_format='channels_last', name=None ) inputs: 进行池化的数据.pool_size: 池化的核大小(pool_heigh

全连接层 和 卷积层

卷积不过是一个稀疏的全连接:全连接也不过是一个画面那么大的卷积.本质上都可以理解为矩阵乘法(卷积可以参考托普利兹矩阵和块循环矩阵),相比起来卷积这种形式可以很好捕捉图像这种有空间相关性输入的特征. 本身conv和fc两者在设计好conv大小的情况下就是等价的, 没有什么取代不取代的. 基本上可以理解全conv就是拿一个小点的fc不停的在图片不同位置上跑, 当然, 有层数的情况下不严格一样, 但是差不了多少. fc不愿意用是因为锁死分辨率, 而且容易造成模型参数太多, 性能上受限制. 但是fc可以