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

前言

以下是我个人遇到的一些困惑,以及自己的理解和一些验证,稍微记录一下,仅供参考。
首先,我觉得,输入大小肯定是可以调的,只不过相应的每一层网络的参数都要做调整,调整后结果如何,没有验证,我这里验证只修改了输入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偶数有什么影响。相关推荐

  1. c语言智力题 操作符详解例题 数据存储 指针初阶 水仙花数 杨辉三角 逆序字符串 喝汽水问题 打印图形 猜凶手 使用指针打印数组内容 调整奇数偶数顺序 运动员猜名次

    [题目名称] 下面代码的结果是:a #include <stdio.h> int i; int main() {i--; //sizeof'的返回值是无符号整型if (i > siz ...

  2. Python调整图片大小并保存调整后的图像

    Python调整图片大小并保存调整后的图像 目录 Python调整图片大小并保存调整后的图像 #原始图像

  3. css如何让a标签,根据输入的内容长度调整宽度,宽度自适应,那位大仙帮帮忙...

    css如何让<a>标签,根据输入的内容长度调整宽度,宽度自适应,那位大仙帮帮忙 5 样式 .ceshi{float:left; margin-left:13px; width:180px; ...

  4. python编写一个程序、输入一个数判断其是偶数还是奇数_编写一个程序,判断用户输入的整数是偶数还是奇数。 (7.0分)_学小易找答案...

    [其它]已知info=[1,2,3,4,5],请通过两种编程方法,将列表变成info=[5,4,3,2,1] (6.0分) [其它]阅读下面的程序,分析代码是否可以编译通过,如果能编译通过,请列出运行 ...

  5. android程序字体大小,Android 动态调整应用字体大小

    Android应用字体大小默认随系统设置的字体大小而变化,但您可能不希望您的应用字体大小随系统设置变化,想要自己控制,例如微信.本文简单介绍一下如何实现应用字体大小动态调整而不是依赖系统设置 字体大小 ...

  6. Java解决角谷定理。输入一个自然数,若为偶数,则把它除以2,若为奇数,则把它乘以3加1。经过如此有限次运算后,总可以得到自然数值1。求经过多少次可得到自然数1。

    一.题目分析 2.角谷定理.输入一个自然数,若为偶数,则把它除以2,若为奇数,则把它乘以3加1.经过如此有限次运算后,总可以得到自然数值1.求经过多少次可得到自然数1. 分析:假设一个数为n,定义一个 ...

  7. 偶数乘2奇数乘3C语言,输入一个整数x,如果为偶数乘2,否则乘3,然后输出.C语言

    编写一个程序,输入一个正整数,并做以下运算:如果为偶数,除以2,如果为奇数,乘3加1.得到的结果再按上 本人不会C#,算法相通,用c语言演示一下:#includevoidmain(void){intz ...

  8. 角谷定理。输入一个自然数,若为偶数,则把它除以2,若为奇数,则把它乘以3加1。经过如此有限次运算后,总可以得到自然数值1。求经过多少次可得到自然数1。

    角谷定理:输入一个自然数,若为偶数,则把它除以2,若为奇数,则把它乘以3加1.经过如此有限次运算后,总可以得到自然数值1.求经过多少次可得到自然数1. 如:输入22, 输出 22 11 34 17 5 ...

  9. C++解角谷定理:输入一个自然数,若为偶数,则把它除以2,若为奇数,则把它乘以3加1。经过如此有限次运算后,总可以得到自然数值1。若输入自然数为1,则不需要运算,运算次数为1(用循环和递归分别实现)

    角谷定理 题目描述 角谷定理:输入一个自然数,若为偶数,则把它除以2,若为奇数,则把它乘以3加1.经过如此有限次运算后,总可以得到自然数值1. 现在请你编写C++程序求经过多少个数可得到自然数1.如: ...

  10. HTML前端输入一个值判断奇数还是偶数

    目录 解释: 1.这个是让用户输入一个任意数 2.先用输入的值磨2如果等于0那就输出偶数,否则就奇数. 代码:展示 成品运行展示: 1.如果输入10那么就弹出偶数 2.如果输入15,那么久弹出奇数 解 ...

最新文章

  1. printf语句中包含'\0'字符的处理
  2. 软件熵:软件开发中推倒重来的过程就是软件熵不断增加的过程
  3. mysql 给min值取别名_mysql基本命令
  4. 已知先序遍历和中序遍历,输出他的后序遍历序列.
  5. SQL——将表中的最大ID+1插入新的ID中------Insert into 表 MAX(表id) +1
  6. windows下安装nginx
  7. 数据可视化 信息可视化_可视化哲学的黎明
  8. PHOTOSHOP常用快捷键了
  9. deebot扫地机器人响四声_中国智能扫地机器人重点制造基地企业名录(2020年版)...
  10. 网络安全之***手法计中计
  11. 软件测试高频面试题真实分享/网上银行转账是怎么测的,设计一下测试用例。
  12. shopxp商城系统对接个人支付宝免签h5支付
  13. 前端面试 - css , 布局 ,js ,vue
  14. llvm如何使用vc编译器_使用LLVM框架创建有效的编译器,第2部分
  15. html5手机 一键开发,Html5变革下的H5和手机app开发工具
  16. python操作excel编号自增加1
  17. 通用图床服务架构解析(百万级回源/天)
  18. python dfs
  19. python第4周(python学习题集)
  20. Word中题注按章节不同编号

热门文章

  1. 练习时长一年半,算法蒟蒻的成长记录
  2. Fst, pi, TajimaD plink 计算
  3. Python爬虫爬取B站封面图片,这才是我们学好爬虫的动力!
  4. Chromium内核的浏览器Browsers查看Chromium的版本 : navigator.userAgent
  5. 2019计算机世界语言排名,2019程序语言排行_2019 年 8 月编程语言排行榜
  6. 25句经典语录 带你成长
  7. HDU 4585 Shaolin (STL)
  8. EDI集成对业务的重要性
  9. 小米平板2刷哪个系统更流畅_小米平板2刷lineage os与remix os及其体验
  10. arm linux开发板tar移植