
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 python2 import argparse import copy import logging im...原创 2019-01-06 11:20:53 · 1096 阅读 · 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 · 1179 阅读 · 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 · 715 阅读 · 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 · 587 阅读 · 0 评论 -
Caffe2填坑系列(6)----gcc编译报错:程序中有游离的“\357”、"\273"、"\277"等
原因一:程序中使用了中文的标点符号 程序(*.c,*.h)中使用了中文的标点符号(全角),比如;,},+。改成英文的标点半角符号就行了。甚至有时候空格也会出现类似错误,删掉该空格 重新输入。 vim里面做类似替换还是很容易的。 如何看到报错的符号? od -c hello.c > log.txt 在log中就能看到符号了 原因二:文件存储格式有问题 如果替换成了英文标点还出错的话,还...原创 2019-05-05 23:28:31 · 387 阅读 · 0 评论 -
Caffe2填坑系列(4)----指定梯度计算时的输入和输出
class GetInterpGradient : public GradientMakerBase{ using GradientMakerBase::GradientMakerBase; vector<OperatorDef> GetGradientDefs() override{ return SingleGradientDef( ...原创 2019-04-29 23:43:56 · 398 阅读 · 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 · 367 阅读 · 0 评论 -
Caffe2填坑系列(1)----三个头文件
已经有将近一年的时间没有写博客了。过去的一年了,学习了很多新的东西,在这里和大家分享一下,希望对你有所帮助。 特别声明:我在这个系列中所使用的Caffe2,不是已经合并进Pytorch的Caffe2,而是为合并前的。这两者的差别还是很大的。 今天,作为第一讲,内容可以说非常少。 - #include "caffe2/core/context.h"选择是CPU或者GPU - #include "...原创 2019-04-19 23:29:18 · 425 阅读 · 0 评论 -
Caffe2填坑系列(5)----获取输入输出数据----CPU与GPU稍有不同
CPU const auto& a = Input(0)获取第一个输入给a,a的类型是Tensor auto* b = Output(0)获取第一个输入的指针赋给b 获取指向Tensor内数据的指针: const auto* a1 = a.template data(),需要注意两点1.data()前的template ;2、输入一般是只读,我们不希望改变起内部数据,data()返回的是...原创 2019-05-02 12:03:01 · 535 阅读 · 0 评论 -
Caffe2填坑系列(3)----OPERATOR_SCHEMA()
operator_schema.h NumInputs() // 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 · 348 阅读 · 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 · 562 阅读 · 0 评论