EasyCNN是一个轻量级的CNN框架,纯C++11编写,不依赖于任何库,可跨平台应用于Linux/Windows/Android/iOS等平台。
TensorFlow是Google开发的深度学习框架,由专业工程人员与算法开发人员合作开发而成,是目前最火的开源深度学习框架。
EasyCNN具有极轻量级的优点,很容易port到任何使用场景,而TensorFlow设计训练模型非常方便高效。
因此本文结合TensorFlow与EasyCNN进行模型的训练与部署:
- 采用TensorFlow设计训练模型;
- 将TensorFlow模型转换为EasyCNN模型;
- 部署EasyCNN模型到实际业务中。
TensorFlow模型代码:
1 | def weight_variable(shape): |
对应的EasyCNN模型代码:
1 | static EasyCNN::NetWork buildConvNet(const size_t batch, const size_t channels, const size_t width, const size_t height) |
抽取TensorFlow模型参数转换为EasyCNN模型参数。TensorFlow模型参数存储在tf.Variable中,是一种类Numpy的Tensor。EasyCNN模型参数是多维数组,非常简单的结构。
下面是模型转换代码:
1 | def export_input(f,channel,width,height): |
这种方法能很好的利用TensorFlow进行高效的GPU模型训练,同时方便的部署到任何环境。