如何在新版本caffe里添加新的一层

如何在新版本caffe里添加新的一层,第1张

首先确定要添加的layer的类型,是common_layer 还是 data_layer 还是loss_layer,

neuron_layer, vision_layer

,这里的Wtf_Layer肯定是属vision_layer了,所以打开vision_layers.hpp

然后复制convolution_layer的相关代码,把类名还有构造函数的名字改为WtfLayer,如果没有用到GPU运算,那么把里面的带GPU的函数都删掉

2. 将Wtf_layer.cpp 添加到src\caffe\layers文件夹中,代码内容复制convolution_layer.cpp 把对应的类名修改(可以搜一下conv关键字,然后改为Wtf)

3. 假如有gpu的代码就添加响应的Wtf_layer.cu (这里不添加了)

4. 修改proto/caffe.proto文件,找到LayerType,添加WTF,并更新ID(新的ID应该是34)。假如说Wtf_Layer有参数,比如Convolution肯定是有参数的,那么添加WtfParameter类

5. 在layer_factory.cpp中添加响应的代码,就是一堆if ... else的那片代码

6. 这个可以不做,但是为了结果还是做一个,就是写一个测试文件,检查前向后向传播的数据是否正确。

整了一晚上加一上午。网上关于python的记录较少,这里写一下。这里的环境是WIN10+cuda v7.5 +cudnn v4 + opencv + pycharm+VS2013使用的是GPU,我的GPU是titan16G+内存32G首先是caffe的文件以及第三方库的编译,这里提供一个已经编译好的的连接,我就是从那里下好然后编译完毕的。点击打开链接 happynear的然后就是如何编译python接口。1、首先先生成两个python文件,在src/caffe/proto/extract_proto.bat 里生成caffe_pb2.py 这个之后有用。2、然后打开已经给好的caffe/buildVS2013,打开里面已经有的工程文件,正常的情况下应该是有7个工程,选中pycaffee单独作为要编译的项目。如图所示:把pycaffe作为单启动。注意需要在release x64位下编译。如果没有这个的话,就将这个文件夹里python文件夹中的项目加入即可。如果没有python项目,就自己建一个,将python文件夹里的cpp文件加入就可以了。3、选择pycaffe的属性,将配置属性下的VC++目录中的包含目录和库目录填上你python所在的include和libs 再在C/C++的目录下的附加包含目录一项中添加以我的python为例。D:/python27/Lib;D:/python/include/ 以及D:/Python27/Lib/site-packages/numpy/core/include 如果你安装了CUDNN这里可以在预处理器那里把USE_CUDNN加上,同时在LINKER的输入目录下的附加依赖库中加入cudnn的lib文件。3、开始编译即可。这里要注意一定要和caffe、caffelib在一个项目里编译,否则会报错。4、编译成功后会在caffe/python/caffe下生成_caffe.pyd 是打不开的5、配置python环境:需要几个额外库Cython>=0.19.2numpy>=1.7.1scipy>=0.13.2scikit-image>=0.9.3matplotlib>=1.3.1ipython>=3.0.0h5py>=2.2.0leveldb>=0.191networkx>=1.8.1nose>=1.3.0pandas>=0.12.0python-dateutil>=1.4,<2protobuf>=2.5.0python-gflags>=2.0pyyaml>=3.10Pillow>=2.3.0six>=1.1.0其中numpy要装MKL版本的,不然scipy装上了BLAS不能用leveldb没有windows版本的,不过我找到了可以使用的办法。见这个博客:点击打开链接如果有pip install 装不上的,可以上这个网站找 wheel文件安装就可以了点击打开链接6、最后把目录中python下的caffe文件夹复制到python27/Lib/site-packages就可以了。测试的时候只需要在控制台下输入import caffe 看能载入就知道成功了:)

显示的是protoc版本太低,尝试:

protoc --version 确认版本号

apt search protoc 查看是否有新的版本

如果有更新版本的话可以 apt-get install protoc 安装

没有的话只好手动下载源码包编译了

更新protoc后删除现编译的文件夹然后从头编译一下,应该不会再报这个错误了。

希望对你有所帮助。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11771964.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存