本文涉及的相关教程和代码:
CPP-Call-Tensorflow
C++ 调用 Python(TensorFlow) 程序
https://github.com/BIGBALLON/CPP-Call-Tensorflow
需要 c++ 资料加入小编 c/c++ 编程群: 825414254
Caffe2-Tutorial
使用 Caffe2 Python API 建立并训练 LeNet, 并正确存 weight
使用 Caffe2 Python API 建立并训练 ResNet, 不使用 lmdb, 并正确存取带有 BN 的 weight
使用 Caffe2 C++ API 读取预训练 model 并进行预测
使用 Caffe2 Python API 进行 Multi-GPU 训练
将 Caffe 的 weight 转化为 Caffe2 的 weight, 并使用 Caffe2 C++ 进行读取与预测
将 PyTorch 的 weight 转化为 Caffe2 的 weight, 并使用 Caffe2 C++ 进行读取与预测
- https://github.com/BIGBALLON/Caffe2-Tutorial
- PyTorch-CPP
使用 PyTorch C++ API (Libtorch) 读取预训练 model 并进行预测
https://github.com/BIGBALLON/PyTorch-CPP
OK, 下面开始讲故事, 不想听故事的可以直接把代码抱走, 不用客气, 请随意啦.
0. 初识 Deep Learning
大约 1 年半前至 2 年前的样子, 选修了学校的 Deep Learning and Practice, 第一次接触深度学习, 记得那时候大家用的多半是 TensorFlow, 第一个作业是实现 NIN(Network In Network), 弄了半天因为 initial 的问题死活 train 不起来, 神奇的舍友推荐我加一下 BN 试试, 搞了半天 TensorFlow 有 N 个 batch_normal 的函数就是不知道怎么用, 于是神奇的舍友又推荐我用一个叫做 keras 的东西, 我靠, BN 只要一行. 更神奇的是, 加完 BN 后 train 得飞起, 于是乎就寄信去问助教, 可不可以用 BN, 第二天助教课得到得答复是, BN 是 homework2 要求使用的 trick, 当时没别的, 就觉得舍友好猛, 啥都懂.
噢, 跑偏了, 回来回来. 后来我们有一个需求, 需要在 C++ 中调用 keras(tf), 查了一下有好多种方法, 选了原生支持的方法, 就加个头文件 Python.h, 然后瞎一顿搞就好了,
代码见 CPP-Call-Tensorflow:https://github.com/BIGBALLON/CPP-Call-Tensorflow
来源: http://www.jianshu.com/p/818873845b64