刘光聪|剖析TensorFlow架构与设计:编程模型
2021/4/26 22:58:25
本文主要是介绍刘光聪|剖析TensorFlow架构与设计:编程模型,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
刘光聪 中生代技术
祝大家在2017年有新的收获。非常感谢大家在春节前夕依然还坚持参加中生代技术的分享活动,也感谢中生代提供的强大的分享平台。我是刘光聪,来自于中兴通讯技术规划部,关注敏捷软件开发,从事机器学习算法研究,目前负责AI平台架构与设计。今天我给大家分享的题目是:剖析TensorFlow架构与设计之编程模型。其目标是对深度学习有一个初步的了解,了解TensorFlow的基本编程模型,及其掌握TensorFlow的几个重要概念。
今天我的分享主要包括3个部分,简单介绍TensorFlow的架构;理解计算图的工作原理;通过Mnist实战,了解TensorFlow编程模型。TensorFlow在跨平台,通用性,分布式, 可扩展性,可视化等方面优势非常明显。TensorFlow是一种典型的基于符号编程的数值计算框架,从总架构上分为两层:- 1. 前端:负责计算图的构造,支持多语言,其中Python提供的 API最为成熟;
- 2. 后端:负责计算图的执行,使用C++实现,直接操作分布式的CPU/GPU环境。
- 1. 类型
- 2. Tensor的Shape:维度,及其每一维度的大小
- 3. 约束:例如默认值,允许的值列表
- 1. 正常的边:用于传递Tensor;
- 2. 特殊的边:用于控制依赖。
- 1. 隐式的图实例
- 2. 显式的图实例
变量在使用之前,都需要使用初始化的OP进行初始化。例如,W使用tf.zeros的初始化OP进行初始化为0值。
存在一些语法糖,可以方便地对变量进行初始化(组合模式)。犹如C++全局变量初始化的依赖关系,TensorFlow变量之间的初始化依赖关系需要特殊的处理。
可以使用Stateful的OP操作变量,完成变量状态的变更。
通过变量分组,可以方便对变量进行分组管理。例如,可以快速获取出所有训练参数的集合。
接下来,通过Mnist的实战,加深 理解TensorFlow的编程模型。实战包括两种网络模型的实践:
- 1. 单层网络(Softmax)
2. 多层网络(2层网络)
然后定义模型的训练参数集合,并定义变量初始化OP,用于在执行阶段完成变量的初始化。这里定义了Mnist的Softmax单层网络模型。
然后定义交叉熵的损失函数,并使用随机梯度下降算法优化该损失函数,使得损失函数最小化。然后建立一个会话,使用Mini-Batch算法,完成模型的训练。」当完成模型的驯良后,可以使用测试数据集对模型进行测试,输出模型的精度。接下来,通过搭建两层网络模型实现Mnist。其中,通过计算图的4个基本子图,显式地增强模型设计的可理解性。
- - Inference:仅完成推理,仅仅包括前向计算过程;
- - Loss:构建损失函数,计算损失;
- - Training:根据损失,反向传递梯度,然后更新权重,直到模型收敛;
- Evaluation:评估模型的精度
使用随机梯度下降算法最小化损失函数 。使用evaluation评估网络模型的精度。
感谢大家的耐心阅读,如果您对TensorFlow的架构与设计感兴趣,请持续关注我后续关于TensorFlow源代码的剖析,谢谢。
最后,欢迎大家关注我的「简书」,直接搜索「刘光聪」,我主要关注敏捷软件开发,机器学习算法,也欢迎大家给我更多的指点,谢谢。
这篇关于刘光聪|剖析TensorFlow架构与设计:编程模型的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-30tensorflow是什么-icode9专业技术文章分享
- 2024-10-15成功地使用本地的 NVIDIA GPU 运行 PyTorch 或 TensorFlow
- 2024-01-23供应链投毒预警 | 恶意Py包仿冒tensorflow AI框架实施后门投毒攻击
- 2024-01-19attributeerror: module 'tensorflow' has no attribute 'placeholder'
- 2024-01-19module 'tensorflow.compat.v2' has no attribute 'internal'
- 2023-07-17【2023年】第33天 Neural Networks and Deep Learning with TensorFlow
- 2023-07-10【2023年】第32天 Boosted Trees with TensorFlow 2.0(随机森林)
- 2023-07-09【2023年】第31天 Logistic Regression with TensorFlow 2.0(用TensorFlow进行逻辑回归)
- 2023-07-01【2023年】第30天 Supervised Learning with TensorFlow 2(用TensorFlow进行监督学习 2)
- 2023-06-18【2023年】第29天 Supervised Learning with TensorFlow 1(用TensorFlow进行监督学习 1)