c++笔记
旭旭_哥
码农一枚
展开
-
cmake mac下安装
最近入职新公司压力还是比较大,节奏比较快,项目方面都是用c++写的,还是从头开始学c++,不知道能坚持多久,还是慢慢的记录下,想想一路做算法过来真累,学习各种编程语言,c++还是绕不过,学习也是周末和晚上抽时间来学习下,平时毕竟还有其他工作要做;cmake我理解相当于java里面的maven一样,是一个相当好用的工具,只需要自己写好CMakeLists.txt,其余都是一键打包,生成可执行文件,例...原创 2018-05-12 10:24:12 · 2268 阅读 · 0 评论 -
kenlm语言模型相关,c++、python相关接口
上周五看了下语言模型相关的工具,之前也打算自己造轮子,发现还是不行,别人开源了就用别人的,其中c++版本比较典型的就是kenlm,这个工具号称单机版训练超级快,经过测试确实很快,支持大规模的语料训练,文件的输入格式一行行以空格隔开的文本,跟word2vev模型训练输入的格式一样,当然c++接口踩过的坑真的是特别多,网上的资料少的可伶,一路摸索,不过python的接口相对来说超级简单。下面看下怎么安...原创 2018-08-27 11:30:23 · 3822 阅读 · 6 评论 -
c++中启动一个thrift服务加载tensorflow训练的模型
前面有几篇博客已经说明如何编译tensorflow,供c++接口调用,前面博客也已经提到怎么利用thrift搭载一个服务,分为客户端和服务端,实际两个综合到一块来相对还是比较容易,下面看下,简单的实现,首先是tensorflow.thrift编写,写的相对比较简单:service Serv{ i32 getresult(),}然后用thrift -r -gen tensor...原创 2018-08-20 15:17:16 · 692 阅读 · 0 评论 -
c++和java 创建tensor的情况
c++和java针对tensorflow中的基本类型Tensor创建可谓有很大不同,最近在搞c++得tensorflow接口,总的来说c++中创建 Tensor目前要依赖于vector,目前总结有两种方式,第一种直接用std::initializer_list 具体做法如下:std::initializer_list<float> v_a={1.0,1.0,1.0,1.0,1.0...原创 2018-08-20 15:29:24 · 3230 阅读 · 4 评论 -
c++中加载tensorflow serving模型格式文件
前几篇文章在讲c++中加载pb格式文件,就是单纯的pb,没有变量的情况,下午仔细看了下c++的源码发现是可以直接加载tensorflow serving格式文件,格式文件包括一个pb文件和一些variables变量文件夹,废话不多说,直接看代码:CMakeLists.txt:cmake_minimum_required(VERSION 3.10)project(cppexcise)...原创 2018-08-20 17:09:44 · 2945 阅读 · 4 评论 -
c++ tensorflow接口GPU使用
c++中tensorflow接口GPU使用情况,通过一个小代码看下:with tf.Session() as sess: x = tf.placeholder(tf.float32, [None, 32], name="x") y = tf.placeholder(tf.float32, [None, 8], name="y") w1 = tf.Variable(t...原创 2018-08-20 20:14:39 · 9168 阅读 · 6 评论 -
C++常见问题: 字符串分割函数 split
原文:http://www.cnblogs.com/dfcao/p/cpp-FAQ-split.htmlC++标准库里面没有字符分割函数split ,这可太不方便了,我已经遇到>3次如何对字符串快速分割这个问题了。列几个常用方法以备不时之需。 方法一: 利用STL自己实现split 函数(常用,简单,直观)原型: vector<string> split(cons...转载 2018-08-21 10:05:51 · 1957 阅读 · 0 评论 -
c++调取inceptionv3网络实现图像分类
这个例子是在看tensorflow里面的官网提供的例子里面看到的,总体来说比较简单,首先是模型下载,最好是用wget的方式下载,我用curl下载失败:wget https://storage.googleapis.com/download.tensorflow.org/models/inception_v3_2016_08_28_frozen.pb.tar.gz然后解压,解压之后是goo...翻译 2018-08-21 13:23:57 · 1700 阅读 · 0 评论 -
c++ tensorflow图像检测接口
原文:https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/multibox_detector这接上面一个例子,用于做图像检测,首先还是下载模型:wget https://storage.googleapis.com/download.tensorflow.org/models/mobile_mu...翻译 2018-08-21 13:43:50 · 3492 阅读 · 3 评论 -
crf++模型训练到c++、java调用(接口)
crf模型是个特别好用的模型,做分词、做ner等nlp工作都力离不开,训练crf模型用很多工具,比较出名的就是今天要讲的crf++,其文档清晰,支持各种语言的接口,本篇blog要讲的是c++和java的接口, 这里java的接口是通过jni调用c++实际本质还是c++,不过也有人通过java实现了c++加载crf模型的那套逻辑,比较出名的就是在ansj中分词,就是通过java实现加载模型的逻辑...原创 2018-08-30 13:17:38 · 3669 阅读 · 3 评论 -
c++使用opencv读取图像进tensorflow做预测
接上一篇文章,上一篇文章简单了训练一个101层的残差网络并保持为pb格式,下面在c++中读取图片进行预测,用Mat转化为tensor的形式,opencv接口安装、tensorflow编译在前面的文章都有说到在这里不再累赘,进模型之前图片预处理较简单,只是做了个去均值操作,灰度什么的没做处理,下面看下代码:#include <iostream>#include <openc...原创 2018-09-26 13:38:48 · 5112 阅读 · 3 评论 -
膨胀卷积+crf模型用于做ner
之前一直都是用bilstmcrf在做ner识别,前两天在GitHub看到一个c++ 分词工具,作者提供两种方式用于做分词,一种是bi-lstm结合crf的形式,一种是膨胀卷积+crf的形式,总体来讲原理还是比较简单,而且思想都来源于15年的一篇论文https://arxiv.org/abs/1511.07122 ,后面人根据这篇论文的扩展到做ner识别,也是一篇比较出名的文章,昨天花时间写了下代码...原创 2018-08-22 21:14:17 · 1709 阅读 · 1 评论 -
c++中的algorithm库
c++中的algorithm库,包含了所有vector、list、set、map操作能想到的一些函数,如查找,替换、排序、计数等常用的功能全部在里面,在这里虽然不像Java那样完全面向对象,方法全部在类里面,但是熟读algorithm库还是非常有必要,官网的链接http://www.cplusplus.com/reference/algorithm/ 可以非常直接学习,代码也非常清晰易懂,下面自...原创 2018-08-18 22:36:58 · 18333 阅读 · 0 评论 -
thrift c++接口简单 启动一个简单的server
我使用的是mac下安装的,首先是安装的是thrift,我直接用brew命令安装的,不过可以直接去官网上下载thrift安装,下载thrift之后可以查看 thrift在哪个位置 which thrift, 主要是为了方便后面CMakeLists.txt中配置,先放出来:include_directories(/usr/local/homebrew/include)link_direc...原创 2018-08-17 23:52:45 · 1605 阅读 · 0 评论 -
cmake编译一个简单c++项目(demo)
下面通过一个小例子来说明cmake编译一个c++项目,生成可执行文件:整理目录结构:CMakeLists.txt addlib build main.cpp电脑上没有tree命令,也不大敢截图,将就着看看,其中build是cmake编译指定的路径,addlib下面也有一个头文件和源文件 ,还有一个CmakeLists.txt,可以看下:CMakeLists.txt library.cpp l...原创 2018-05-12 11:47:36 · 11149 阅读 · 2 评论 -
cmake配置引入外部动态dylib or so or dll文件
以前写java的时候,想要引入外部一个jar包,直接在pom.xml配置依赖就可以,写c++也可以在CMakeList.txt进行配置target_link_libraries配置既可以,下面也还是通过一个demo进行说明,把A项目打包成dylib,在B项目中引用:下面直接看A项目逻辑,在A项目中我写一个偶数相加的方法打包,其基本文件见如下:CMakeLists.txt build evenpl...原创 2018-05-12 14:45:58 · 7929 阅读 · 0 评论 -
c++指针和引用相关笔记
参考:https://blog.csdn.net/qq_27678917/article/details/702248131.指针和引用的定义和性质区别:(1)指针:指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元;而引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已。如:int a=10;int* p=&a;( 指针)int c=12; int&a...原创 2018-05-12 21:38:21 · 161 阅读 · 0 评论 -
c++简单使用boost
准备学习下boost,下午刚刚好把环境装了下,下面通过用thread为例子: boost简单的安装:wget https://dl.bintray.com/boostorg/release/1.67.0/source/boost_1_67_0.tar.gzcd boost_1_67_0sh bootstrap.sh./b2cmake安装:sudo tar ...原创 2018-05-14 22:29:19 · 6837 阅读 · 0 评论 -
c++模板方法和类
先看下方法模板:#include <iostream>#include "ClassTemplate.h"using namespace std;template <typename T> T minxxx(T x,T y){ return (x<y)?x:y;}int main() { std::cout << "Hello, ...原创 2018-05-14 22:34:09 · 3154 阅读 · 0 评论 -
c++宏相关
转自:http://blog.chinaunix.net/uid-21372424-id-119797.html一、#define的基本用法 #define是C语言中提供的宏定义命令,其主要目的是为程序员在编程时提供一定的方便,并能在一定程度上提高程序的运行效率,但学生在学习时往往不能 理解该命令的本质,总是在此处产生一些困惑,在编程时误用该命令,使得程序的运行与预期的目的不一致,或者在读别...转载 2018-05-14 23:24:02 · 170 阅读 · 0 评论 -
tensorflow c++接口,python训练模型,c++调用
参考:参考:https://blog.csdn.net/lovekkss/article/details/77102251https://blog.csdn.net/rockingdingo/article/details/75452711GitHub地址:https://github.com/laMia482/tensorflow_cc-API/blob/master/includehttps:...原创 2018-05-21 23:04:20 · 13282 阅读 · 18 评论 -
java通过jni调用c++逻辑
本博客通过一个简单的例子通过用java调c++处理,逻辑不带返回,直接打印hello word级别的,下面来看下,首先写一个java简答的测试类:package com.xx.odps.ainlp;public class HelloWorld { //导入lib文件 static{ System.load("libjnite.dylib"); }...原创 2018-06-03 12:24:35 · 744 阅读 · 0 评论 -
java调用c++带返回值
java通过jni调用c++,其中涉及到的基本类型会不大一样,int 、float、double可以强转,但是数组和String类型基本上要用过java String-->jni jstring-->c++ string类型转换,具体详细在这篇博客写的比较清楚https://blog.csdn.net/u011974987/article/details/52743495,看下面...原创 2018-06-03 13:54:05 · 2560 阅读 · 4 评论 -
C++之enum枚举量声明、定义、使用与枚举类详解
参考: https://blog.csdn.net/bruce_0712/article/details/54984371 众所周知,C/C++语言可以使用#define和const创建符号常量,而使用enum工具不仅能够创建符号常量,还能定义新的数据类型,但是必须按照一定的规则进行,下面我们一起看下enum的使用方法。步骤(一)——枚举量的声明和定义(1)首先,请看下面的语句:...转载 2018-06-10 19:58:07 · 6304 阅读 · 0 评论 -
c++生成tfrecord文件
步骤和上一篇博客java生成tfrecord文件类似,首先是在tensorflow官网下载protoc后缀文件,利用protoc生成c++代码,把生成feature、example源文件和头文件放到c++项目中,下面看步骤:protoc --cpp_out=cpp/ feature.proto protoc --cpp_out=cpp/ example.proto 这一...原创 2018-10-14 20:37:11 · 2214 阅读 · 2 评论