Alexnet输入大小227x227能否调整,kernel_size偶数有什么影响。

2024-06-13 10:38

本文主要是介绍Alexnet输入大小227x227能否调整,kernel_size偶数有什么影响。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这篇博客对你有点用的话,记得给我点赞,我会更加乐于分享的。

前言

以下是我个人遇到的一些困惑,以及自己的理解和一些验证,稍微记录一下,仅供参考。
首先,我觉得,输入大小肯定是可以调的,只不过相应的每一层网络的参数都要做调整,调整后结果如何,没有验证,我这里验证只修改了输入size和输入层的一些参数,conv1之后的网络参数都不变。

我不要你觉得,我要我觉得,照我说的做..........
  1. Alexnet默认的输入227x227,最初关于224x224和227x227有过困惑,现在不困惑了,网络里面就是227x227,据说224x224可能是写paper时候的手误?还是后来对网络又做了调整?世纪之谜…
  2. 按我说的做,输入就用227x227。一般情况下用默认的227x227就行了,我也训练过自己的数据,也测试过,效果OK的。
  3. 但是,有些时候总想着能不能改变一下输入,但又不想全部每个层的参数都修改。所以就想着能不能只改一下输入层。于是在网上搜到这篇博客,也是这个思路,大家可以去看下,作者写的还是比较清晰易懂的,点个赞 。https://blog.csdn.net/ldsyou2015/article/details/60350556
  4. 我的目标是想把输入的size修改成偶数。但是按照公式来算的话,从输入 n x n到conv1层55x55x96。比如n x n=60x60,那么kernel_size就只能取偶数了。

引用
在这里插入图片描述

  1. 但是呢,kernel_size取偶数有很多弊端,就像知乎这里描述的一样https://www.zhihu.com/question/51603070。不过这些描述一般都是理论说一下偶数核的弊端,没有明说到底会造成多么严重的后果。所以还是想着自己验证一下。
  2. 我是用Alexnet做的二分类。
    train_val.prototxt如下,输入改成60x60,stride 1,kernel_size 6。

在这里插入图片描述
比对一下,就是这几处修改一下,再重新训练模型。
在这里插入图片描述

deploy.prototxt输入修改成60x60,stride 1,kernel_size 6。
在这里插入图片描述

修改之后重新训练,得到caffemodel,然后自己写了测试代码,测试结果和输入227x227的做个比对:
在这里插入图片描述

从表格记录结果来看,输入修改成60x60,stride 1,kernel_size 6之后,得到的模型准确率可以认为完全不能用,当然也可能与输入分辨率下降有关,但不至于这么差。

我的测试代码也放在这里,对比测试时候其他都未改变,只是修改了caffemodel和deploy.prototxt两个文件。

#encoding=utf8
import sys 
sys.path.append('./python')
sys.path.append('./python/caffe')import caffe 
import numpy as np 
import cv2 
import argparseimport matplotlib.pyplot as pltcolor = {'common':'0', 'uniform':'1'}#root = '×××/caffe/'
caffe_model = './models/myAlexnet/myAlexnet_iter_60000.caffemodel'
deploy = './models/myAlexnet/deploy.prototxt'mean_file= './data/myAlexnet/myAlexnet_mean.npy' #mean.npy
def classifier(img, net):transformer = caffe.io.Transformer({'data': net.blobs['data'].data.shape})transformer.set_transpose('data', (2,0,1))transformer.set_mean('data', np.load(mean_file).mean(1).mean(1))
#    transformer.set_raw_scale('data', 255)
#    transformer.set_channel_swap('data', (2,1,0))net.blobs['data'].data[...]= transformer.preprocess('data',img)out = net.forward()prob = out['prob']print probreturn np.argmax(prob)if __name__ == '__main__':testList = open('./data/myAlexnet/test_0.txt', 'r')caffe.set_mode_gpu()caffe.set_device(0)net = caffe.Net(deploy, caffe_model, caffe.TEST)count = 0for line in testList:      imagePath = line.split()[0]   label = line.split()[1]    path = './data/myAlexnet/test/'+imagePath    img = cv2.imread(path)print 'path:'+path#plt.imshow(img)#plt.axis('on')#plt.show()result = classifier(img, net)print '-------------------------------'#plt.imshow(img)#plt.axis('off')#plt.show()print 'result:{}'.format(str(result))print 'label:{}'.format(str(label))print '-------------------------------'if result == int(label):count = count+1Precession = count*1.0/68     #test pic num.test_0=68,test_1=71,test_all=139print 'Precession is {}'.format(str(Precession))

最终,我要说的:
这个对比测试,我认为只是验证了在Alexnet目标分类时,kernel_size如果取偶数,训练的模型效果极差,几乎不能用。
没错,我认为是kernel_size的问题。

这篇关于Alexnet输入大小227x227能否调整,kernel_size偶数有什么影响。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1057066

相关文章

C#中图片如何自适应pictureBox大小

《C#中图片如何自适应pictureBox大小》文章描述了如何在C#中实现图片自适应pictureBox大小,并展示修改前后的效果,修改步骤包括两步,作者分享了个人经验,希望对大家有所帮助... 目录C#图片自适应pictureBox大小编程修改步骤总结C#图片自适应pictureBox大小上图中“z轴

python中os.stat().st_size、os.path.getsize()获取文件大小

《python中os.stat().st_size、os.path.getsize()获取文件大小》本文介绍了使用os.stat()和os.path.getsize()函数获取文件大小,文中通过示例代... 目录一、os.stat().st_size二、os.path.getsize()三、函数封装一、os

深入理解C++ 空类大小

《深入理解C++空类大小》本文主要介绍了C++空类大小,规定空类大小为1字节,主要是为了保证对象的唯一性和可区分性,满足数组元素地址连续的要求,下面就来了解一下... 目录1. 保证对象的唯一性和可区分性2. 满足数组元素地址连续的要求3. 与C++的对象模型和内存管理机制相适配查看类对象内存在C++中,规

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

Linux_kernel驱动开发11

一、改回nfs方式挂载根文件系统         在产品将要上线之前,需要制作不同类型格式的根文件系统         在产品研发阶段,我们还是需要使用nfs的方式挂载根文件系统         优点:可以直接在上位机中修改文件系统内容,延长EMMC的寿命         【1】重启上位机nfs服务         sudo service nfs-kernel-server resta

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

笔记整理—内核!启动!—kernel部分(2)从汇编阶段到start_kernel

kernel起始与ENTRY(stext),和uboot一样,都是从汇编阶段开始的,因为对于kernel而言,还没进行栈的维护,所以无法使用c语言。_HEAD定义了后面代码属于段名为.head .text的段。         内核起始部分代码被解压代码调用,前面关于uboot的文章中有提到过(eg:zImage)。uboot启动是无条件的,只要代码的位置对,上电就工作,kern

解决Office Word不能切换中文输入

我们在使用WORD的时可能会经常碰到WORD中无法输入中文的情况。因为,虽然我们安装了搜狗输入法,但是到我们在WORD中使用搜狗的输入法的切换中英文的按键的时候会发现根本没有效果,无法将输入法切换成中文的。下面我就介绍一下如何在WORD中把搜狗输入法切换到中文。

PDFQFZ高效定制:印章位置、大小随心所欲

前言 在科技编织的快节奏时代,我们不仅追求速度,更追求质量,让每一分努力都转化为生活的甜蜜果实——正是在这样的背景下,一款名为PDFQFZ-PDF的实用软件应运而生,它以其独特的功能和高效的处理能力,在PDF文档处理领域脱颖而出。 它的开发,源自于对现代办公效率提升的迫切需求。在数字化办公日益普及的今天,PDF作为一种跨平台、不易被篡改的文档格式,被广泛应用于合同签署、报告提交、证书打印等各个

当你输入一个网址后都发生什么

原文:http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/  作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些应用所用到的技术:像浏览器,HTTP,HTML,网络服务器,需求处理等等。 本文将更深入的研究当你输入一个网址的时候,后台到底发生了一件件什么样的事~