• caffe实现自己的层


    http://blog.csdn.net/xizero00/article/details/52529341

    将这篇博客所讲进行了实现

    1.LayerParameter也在caffe.proto文件中

    2.头文件直接复制博客的,命名为image_scale_layer.hpp,然后放在caffe/include/caffe/layers下

    3.实现文件也是直接复制博客的,命名为image_scale_layer.cpp,放在caffe/src/caffe/layers下

    4.制作minist的lmdb数据,放在examples/mnist下,这个部分另一篇博客已经总结

    5.在examples目录下创建文件夹imagescale,复制博客中网络的prototxt,并放在这个目录下

    6.复制博客中solver的prototxt,放在examples/imagescale目录下

    7.复制博客的bash文件,放在caffe目录下。然后运行这个bash文件就完成

    按照博客的流程, 最后在运行shell脚本时出现了错误:

    我的solver的确在那个目录下,我也不知道为何会报这个错误。之后我将脚本的命令直接输入在终端,即:

    ./build/tools/caffe train --solver=examples/imagescale/solver.prototxt

    会出现以下错误

    这时我反应过来应该是我没有生成mnist_train_lmdb这个文件,按照之前博客的方式生成之后再执行这个命令就正确了。但执行那个脚本还是报一样的错误。

    之前我按照上一个博客的命令sudo sh ./examples/mnist/create_mnist.sh 生成mnist_train_lmdb,会报下面的错误:

    因为我是远程访问的服务器,所以会造成现在这种permission denied的情况

    总结整个流程:1.实现自己层的.hpp文件,并放在include/caffe/layers目录下

           2.实现自己层的.cpp或.cu,并放在src/caffe/layers目录下。注意:

               需要在.cpp添加注册的宏定义:1.INSTANTIATE_CLASS(MyNeuronLayer);  

                             2.REGISTER_LAYER_CLASS(MyNeuron); 

               如果有my_neuron_layer.cu,则添加:INSTANTIATE_LAYER_GPU_FUNCS(MyNeuronLayer);  

               都是在cpp的末尾加

               如果不加,会报以下错误:

               

           3.修改src/caffe/proto/caffe.proto文件,这个文件要修改两个地方:在LayerParameter加ID号,添加实现类所需要的参数。这样你在编写 train.prototxt 或者          test.prototxt 或者 deploy.prototxt 时就能把新 Layer 的描述写进去,便于修改网络结构和替换其他相同功能的 Layer 了

           4.编译

           5.你还可以在src/caffe/test/中增加layer的测试代码,对所写的layer前传和反传进行测试,就像另一篇自己写的博客caffe单独测试添加的layer,但写测试代码

             有点麻烦

         

    http://www.cnblogs.com/zf-blog/p/6551278.html

    中间写的过程怎么知道自己写的正确不正确,怎么去debug是我需要继续思考的

  • 相关阅读:
    初识jQuery(2)
    初识jQuery(1)
    document和javaScript内置对象
    location
    history
    window对象
    注释、语法约定、函数和作用域
    运算符和typeof
    string
    数据恢复
  • 原文地址:https://www.cnblogs.com/ymjyqsx/p/7727481.html
Copyright © 2020-2023  润新知