
Caffe2
Sunshine_in_Moon
对计算机视觉,深度学习方向很感兴趣,愿意和大家分享。现在学习大规模人脸识别,人脸检测等相关工作,希望得到大家的帮助!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Caffe To Caffe2 Python脚本caffe_translator.py详细注释
将Caffe的模型转换成Caffe2模型,官方提供了一个caffe_translator.py脚本。在此我做了详细的注释。## @package caffe_translator# Module caffe2.python.caffe_translator#!/usr/bin/env python2import argparseimport copyimport loggingim...原创 2019-01-06 11:20:53 · 1080 阅读 · 0 评论 -
Caffe2填坑系列(10)----编译成功,在python中使用时报”key already registered. Offending key: ImageInput“
原因:ImageInput这个Op被注册了多次,我在编写自己的.cc文件时,是以image_input.cc为模板,前面我都改成了自己Op的名字,包括REGISTER_CPU_OPERATOR(),OPERATOR_SCHEMA().唯独没有改NO_GRADIENT(),造成了上述错误。具体代码可参考core/register.h...原创 2019-05-20 23:11:22 · 1170 阅读 · 0 评论 -
Caffe2填坑系列(9)----错误提示“undefined reference to caffe2::CUDAContext::“
一般出现”undefined reference to…“的错误是找不到相应的库造成的,但我自己在编写完一个Op后编译时出现了这个问题,经过一天的查找终于找到了根源所在,知道原因后自己都无语了,原来在caffe2中文件的命名是有规则了,不能胡乱起名。我错将_op_gpu.cc,写成了_gpu_op.cc首先,看一下在image/CMakeLists.txt中的设置if(USE_OPENCV ...原创 2019-05-14 23:50:12 · 710 阅读 · 0 评论 -
Caffe2填坑系列(7)----make时“cannot find -lopencv_dep_cudart”
在CmakeList.txt 中OpenCV之前,加上set(CUDA_USE_STATIC_CUDA_RUNTIME OFF)或则在make时make -D CUDA_USE_STATIC_CUDA_RUNTIME=OFF原创 2019-05-08 23:18:16 · 582 阅读 · 0 评论 -
Caffe2填坑系列(6)----gcc编译报错:程序中有游离的“\357”、"\273"、"\277"等
原因一:程序中使用了中文的标点符号程序(*.c,*.h)中使用了中文的标点符号(全角),比如;,},+。改成英文的标点半角符号就行了。甚至有时候空格也会出现类似错误,删掉该空格 重新输入。vim里面做类似替换还是很容易的。如何看到报错的符号?od -c hello.c > log.txt在log中就能看到符号了原因二:文件存储格式有问题如果替换成了英文标点还出错的话,还...原创 2019-05-05 23:28:31 · 380 阅读 · 0 评论 -
Caffe2填坑系列(4)----指定梯度计算时的输入和输出
class GetInterpGradient : public GradientMakerBase{ using GradientMakerBase::GradientMakerBase; vector<OperatorDef> GetGradientDefs() override{ return SingleGradientDef( ...原创 2019-04-29 23:43:56 · 390 阅读 · 0 评论 -
Caffe2填坑系列(2)----获取数据或参数的方法
pad_end_(OperatorBase::template GetSingleArgument(“pad_end”,0))如果参数“pad_end”没有提供,则采用0为默认值获取Op的输入和输出const auto& X = Input(0):获取第一个输入,注意输入一般为常量类型,因为我们一般只读不更改数据。auto* Y = Output(0): 指向第一个输出,不能为常...原创 2019-04-24 22:23:21 · 364 阅读 · 0 评论 -
Caffe2填坑系列(1)----三个头文件
已经有将近一年的时间没有写博客了。过去的一年了,学习了很多新的东西,在这里和大家分享一下,希望对你有所帮助。特别声明:我在这个系列中所使用的Caffe2,不是已经合并进Pytorch的Caffe2,而是为合并前的。这两者的差别还是很大的。今天,作为第一讲,内容可以说非常少。- #include "caffe2/core/context.h"选择是CPU或者GPU- #include "...原创 2019-04-19 23:29:18 · 419 阅读 · 0 评论 -
Caffe2填坑系列(5)----获取输入输出数据----CPU与GPU稍有不同
CPUconst auto& a = Input(0)获取第一个输入给a,a的类型是Tensorauto* b = Output(0)获取第一个输入的指针赋给b获取指向Tensor内数据的指针:const auto* a1 = a.template data(),需要注意两点1.data()前的template ;2、输入一般是只读,我们不希望改变起内部数据,data()返回的是...原创 2019-05-02 12:03:01 · 532 阅读 · 0 评论 -
Caffe2填坑系列(3)----OPERATOR_SCHEMA()
operator_schema.hNumInputs()// Functions to set the property of the operator schemas. // Sets the number of inputs, either a fixed number or a min and a max. /** * @brief A single in...原创 2019-04-25 23:34:41 · 344 阅读 · 0 评论 -
Caffe2填坑系列(8)----获得Op输入和输出blob的个数的两种方法
构造函数中,任何一个Op都是公有继承Operator,构造函数一般是 C++:Operator<Context>(def,ws),…可以看到每一个构造函数里都有一个OperatorDef的对象def,OperatorDef在protot里进行定义,主要时组着里一个Op的一些信息,我们可以调用def.input_size()或def.output_size()获得输入输出的...原创 2019-05-12 22:22:34 · 558 阅读 · 0 评论