caffeine框架,caffe谁开发的
这个时候应该是一副吐血的表情,一副疲惫的表情(坐在电脑前一下午一整夜)。
然而,鹅的事情没有取得任何进展。
在得知服务器已经安装了caffe之后,运行起来还是没有预想的那么流畅。
进口caffe一开始就有问题(救命!)
先贴一个hmdmt的专栏吧。也挺详细的。
https://www.cnblogs.com/denny402/tag/caffe/
首先,我是在ubuntu上做的,但是遇到了似乎是内存不足的问题。
所以我才换了服务器。(不过我也有点怀疑,是不是文件设置错了,因为之前按照这个代码找别的模型记忆训练还是可以的。)
老师提供的服务器配置还是很强大的,用的是CentOS 6系统。
虽然配置很好,但是由于各种原因,安装的软件一般不是最新版本或者没有更新。
这就导致了我在导入caffe时遇到的第二个问题(第一个问题是找不到Caffe的型号,在~里加一行。/bashrc
导出python path=/home/Zheng zhi Huang/caffe/python:$ python path
解决了)
有一个奇怪的语法错误!(忘记截图了。反正这是个很少见的错误,所以我把百度必应搜了个遍都没有和我一样的问题。)
但是在网上遍历了热心网友的各种错误后,突然觉得python版本和caffe不兼容。
因为caffe的配置一般用python2.7或者python3,但是我输入python指令后显示的当前版本是2.6。
当我决定更新python的版本时,突然发现系统中已经有Python 2.7版本了(嘻嘻)
它不是默认的python版本,所以当我使用python2.7命令运行。py文件,我跳过了语法错误(耶)
虽然服务器配置很强大,但是训练模型还是运行了3个小时。
模型训练完成后,您可以开始测试测试集中没有的其他图片。
但是在此之前,您必须为教师创建一个部署文件。需要注意的是,你需要根据你图片的大小来改变他输入dim的值。
否则,将出现以下错误。
无法从层“InnerProduct1”复制param 0权重;形状不匹配。源参数形状是500 744200(372100000);目标参数形状为500 800 (400000)。要从头开始学习该层的参数,而不是从保存的网络中复制,请重命名该层。
Post一个批量测试文件(python)只是对denny的单次测试做了一些改动。
# coding=utf-8 import cv2 import OS import caffe import numpy as NP root=/home/zhengzhi Huang/ # root Deploy=root mnist/Deploy . proto txt # Deploy file caffe _ model=root mnist/lenet _ ITER _ 9380 . caffe model # trained caffe model # img=root mnist/test/8/8(1)。png #随机找到一张待测图片rootdir=root mnist/Test/#待测图片labels _ filename=root mnist/Test/labels . txt #类别名称文件,将数字标签转换回类别名称net=caffe.net(deploy,caffe _ model,caffe。TEST) #加载模型和网络#图像预处理设置transformer=caffe . io . transformer({ data :net . blobs[ data ]。data.shape}) #设置图像的形状格式(1,3,28,28)transformer . Set _ transpose( data ,(2,0,1)) #将原图片的维数顺序从(28,28,3)改为(3,28,28) # transformer.set _ mean (data ,NP。LOAD (mean _ file)。均值(1)。Mean (1)) #减去平均值。之前训练模型的时候没有减去均值这一项,所以不需要transformer . set _ raw _ scale( data ,255) #缩放到transformer . set _ channel _ swap between[0,255] (2,1,0)) #交换通道,把图片从RGB换成BGR # # # list 1=OS . list dir(rootdir)right=0.0 total=0.0 chance=0.0 for I in range(0,len(list 1)):path=OS . path . join(rootdirCOLOR_BGR2GRAY)ret,img _ binary=cv2 . threshold(gray image,127,255,cv2。THRESH _ BINARY)cv2 . im write(Img dir,Img _ BINARY)im=caffe . io . Load _ image(Img dir)# Load image net . blobs[ data ]。数据[.]=transformer.preprocess (data ,im) #执行上面设置的图片预处理操作,将图片加载到blob # execute test out=net . forward()labels=NP . load txt(labels _ filename,str,delimiter= \ T) #读取类别名文件prob=net.blobs [Softmax1]。数据[0]。flatten () #取出最后一层(softmax)属于某个类别的概率值,打印print pro border=prob . arg sort()[-1]#要对概率值进行排序,取出序号# print 类是:最大值所在的地方,labels [order] #并将序号转换为对应的类别名,打印if Labels[order]==list 1[I]:right=right 1 else:print list 2[j],Labels[order]total=total 1 chance=right/total print right是:,则
准确率只有0.5,算了吧。
但是.事情远没有结束。
你找到了吗?错就错在没有把目标识别为目标。
而且我在测量所有图片的时候,发现它把所有图片都识别为target!
所以没有目标是完全错误的,emmmm
在csdn上找了很多博客,对比mnist数字识别实例,发现
类别名称只能使用从0开始的数字!
解决这个问题后
同样,损失值分别稳定在87.33和0.69。
稳定在87.33降低初始学习率,稳定在0.69 …
也就是说这个网络无法收敛。
我们只能寻找其他方法来提高识别准确率。
《番外》
顺便用CentOS6录坑。
这个系统不能通过换档来切换全角和半角。
以至于我不得不在网上搜索并粘贴它,以便键入冒号、括号和美元符号.
直到有一天我终于想出了真正的捷径crtl shift。
复制ctrl fn c粘贴ctrl fn v
好多了!
然而,现在我发现普通指令不能处理这些普通指令的原因是:
因为我的运行平台——Mac Parallels Desktop Windows 10 CentOS
事实上,在一个通用的Windows远程连接服务器中,通用的指令可以工作。
出口
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。