tensorflow note 2017.12.03

Tensorflow

Tensorflow既是机器学习算法实现接口,又是机器学习算法执行框架。TensorFlow的前端支持Python、C++、Go、Java等,目前推荐优先使用Python。后端使用C++、CUDA等。TensorFlow算法在异构系统方便移植,Android、iOS、CPU服务器、GPU集群等。可以实现机器学习、线性回归、逻辑回归、随机森林等算法。在语音识别、自然语言处理、计算机视觉、机器人控制、信息抽取、药物研发、分子活动预测等方面应用广泛。

TensorFlow方便设计神经网络结构。

不必写C++、CUDA。自动求导。

C++核心方便线上部署。支持低配置嵌入式设备。通过SWIG添加其他脚本支持。

每个mini-batch要从Python feed到网络,延迟大。

内置TF.lean、TF.Slim快速设计网络。兼容scikit-lean estimator接口,实现evaluate、grid、search、cross、validation等功能。

自动将分支转为子图。灵活移值,轻易部署任意数量设备。编译快。

TensorBoard可视化网络结构、过程。支持常见网络结构(卷积神经网络CNN,循环神经网络RNN)、深度强化学习、计算密集科学计算等。

缺点,计算图必须为静态图。异构支持各种硬件和操作系统。框架分布式性能是关键。TensorFlow 单机reduction只能用CPU,分布式通信使用socket RPC,不是RDMA,待优化。TensorFlow Serving 组件可导出训练好的模型,部署成对外提供预测是服务RESTful接口。实现应用机器学习全流程,训练模型、调试参数、打包模型、部署服务。

TensorBoard,监控运行过程关键指标,支持标量、图片、直方图、计算图可视化。