您的位置:首页 > python教程python教程

【关于caffe-windows配置matlab和python接口的问题】caffe和python教程

caffe和python教程2020-09-16 15:15:40人已围观

在caffe里怎么编译python
直接看啊,看caffe/python/caffe文件夹下面的py代码,代码各模块的功能以及使用说如果不限于其提供的接口,可以自己 使用opencv的python接口处理io问题,功能更强大,主要是读图、预处理的操作,理解后用opencv也很容易实现。
caffe python怎么使用
直接看代,看caffe/python/caffe文件夹下面的py代码,代码中有各模块的功能以及使用说明。如果不想受限于其提接口,可以自己
使用opencv的python接口处理io问题,功能更强大,主要是读图、预处理的操作,理解后用opencv也很容易实现。
微软官方caffe和老版本caffe的区别
caffe:http://caffe.berkeleyvision.org/
1.最原始的最开始版本:伯克利BVLC版
https://github.com/BVLC/caffe
主要在Linux上运行matlab和Python接口

傻瓜都能学会的配置教程:Caffe Ubuntu14.04 CUDA6.5新手安装配置:
http://www.haodaima.net/art/2823705

http://www.cnblogs.com/platero/p/3993877.html

学习教程:http://suanfazu.com/t/caffe/281

2.贾扬清大大自己的版本:https://github.com/Yangqing/caffe

3.caffe-for-windows基本版:https://github.com/niuzhiheng/caffe
windows caffe vs2013 cuda6.5配置记录:http://www.bubuko.com/infodetail-902302.html
caffe for windows 训练cifar10:http://www.th7.cn/system/win/201411/77318.shtml
Windows下编译Caffe并编译Matlab接口:http://www.th7.cn/system/win/201504/102914.shtml

4.caffe window改进版运行在VS2013:https://github.com/initialneil/caffe-vs2013
配置:https://initialneil.wordpress.com/

5.我目前用的版本(happynear大神的):https://github.com/happynear/caffe-windows
配置:http://blog.csdn.net/happynear/article/details/45372231
怎样用python调用已经训练好的caffe

定义CAFFE为caffe跟目录,caffe的代码都在$CAFFE/src/caffe 下,主以下部分:net, blob, layer, solver.

net.cpp:
net定义网络, 整络中含有很多layers, net.cpp负责计算整个网络在训练中的forward, backward过程, 即计算forward/backward 时各layer的gradient。

layers:
在$CAFFE/src/caffe/layers中的层,在protobuffer (.proto文件中定义message类型,.prototxt或.binaryproto文件中定义message的值) 中调用时包含属性name, type(data/conv/pool…), connection structure (input blobs and output blobs),layer-specific parameters(如conv层的kernel大小)。定义一个layer需要定义其setup, forward 和backward过程。

blob.cpp:
net中的数据和求导结果通过4维的blob传递。一个layer有很多blobs, e.g,

对data,weight blob大小为Number * Channels * Height * Width, 如256*3*224*224;

对conv层,weight blob大小为 Output 节点数 * Input 节点数 * Height * Width,如AlexNet第一个conv层的blob大小为96 x 3 x 11 x 11;

对inner product 层, weight blob大小为 1 * 1 * Output节点数 * Input节点数; bias blob大小为1 * 1 * 1 * Output节点数( conv层和inner product层一样,也有weight和bias,所以在网络结构定义中我们会看到两个blobs_lr,第一个是weights的,第二个是bias的。类似地,weight_decay也有两个,一个是weight的,一个是bias的);


blob中,mutable_cpu/gpu_data() 和cpu/gpu_data()用来管理memory,cpu/gpu_diff()和 mutable_cpu/gpu_diff()用来计算求导结果。

slover.cpp:
结合loss,用gradient更新weights。主要函数:
Init(),
Solve(),
ComputeUpdateValue(),
Snapshot(), Restore(),//快照(拷贝)与恢复 网络state
Test();

在solver.cpp中有3中solver,即3个类:AdaGradSolver, SGDSolver和NesterovSolver可供选择。

关于loss,可以同时有多个loss,可以加regularization(L1/L2);

Protocol buffer:

上面已经将过, protocol buffer在 .proto文件中定义message类型,.prototxt或.binaryproto文件中定义message的值;

Caffe
Caffe的所有message定义在$CAFFE/src/caffe/proto/caffe.proto中。

Experiment
在实验中,主要用到两个protocol buffer: solver的和model的,分别定义solver参数(学习率啥的)和model结构(网络结构)。


好吧,copy了一大段,不晓得有没有帮助,说点accuracy = 0.5的问题。简单说,就是分错了,好吧我知道这是废话。既然是分错了,那么就要检查下了,首先检查你的训练模型。
根据训练过程来看,训练应该是已经收敛了,(反正loss一直在减小)。
这句可能是我理解问题,如果模型收敛的话,loss应该趋于平稳,如这样。
哦这是对数图。如果没有完全收敛的话,考虑下调整参数吧。说到调参,又是个坑啊。。。这个我也是懵懵懂懂。不过可以参考某些大牛的做法,比如用浅层CNN参数初始化深层CNN,或者学hinton老爷子用DBN来搞个预训练。不过即使是随机初始参数,按道理不应该出现这种accuracy=0.5的情况。个人感觉要么就是训练没有完成,要么就是在做最后二分的那一层有什么问题。。。
其实应该先检查训练数据,训练数据搞混了,其他都是白搭。
如果检查模型,你可以先看下你参数更新的梯度是否已经趋于零了,然后再看看你二分那一层有木有问题。
当然,说了这么可能也没啥帮助,如果你哪天改用matlab或者theano了,可以交流下,caffe确实不甚了解。。。

在尝试用caffe分类一个自己的二分类图像数据库。根据训练过程来看,训练应该是已经收敛了,(反正loss一直在减小)。然而测试集上的accuracy一直都是=0.5.

所以现在想着把生成的模型文件调出来用数据测试下,观察下是什么问题,请问应当如何去实现呢。

或者各位如果能指点下,可能是什么原因导致的accuracy = 0.5 不变。那就更好啦。

谢谢!


关于caffe-windows配置matlab和python接口的问题
1.安装
使PyInstaller需要安装PyWin32
下载与Python的PyInstaller版本, 解压后就算安装好了 。
2.生成exe文件
Python程目录为 F:\hello.py

在命令行 中进入pyinstaller所在的目录,运行python pyinstaller.py F:\hello.py

在PyInstaller-2.1目录下,生成文件夹hello

hello目录下有文件

exe文件在dist目录下

如果将python文件复制到 pyinstaller.py 所在目录下,则运行 python pyinstaller.py hello.py
如何将caffe

很赞哦! ()

相关文章