| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> TensorFlow 学习 -> 正文阅读 |
|
[人工智能]TensorFlow 学习 |
记录自己学习TensorFlow的过程,因为正在做的项目需要将机器学习与esp32结合使用,想要将机器学习的过程也放在esp32上实现。因为tensorflow lite可以实现代码向嵌入式设备的转换,所以开始学习tensorflow。目前内容都基于郑泽宇、顾思宇老师的著作:《TensorFlow实战Google深度学习框架》 一、基础知识:简而言之,TF是一种开源计算框架,该框架可以很好的实现各种深度学习的算法。
1.1 计算模型--计算图
TF中所有计算,都会被转化为计算图上的节点。节点之间的边(连线),描述了计算之间的以来关系。 ?这里表示了a+b。a,b指向加法算子add,add依赖于a,b但是ab不依赖与add。 TF会自动将定义的计算转化为计算图上的节点 在TF中系统会自动维护一个默认的计算图,可以通过tf.get_default_graph获取
?还可以通过tf.Graph创建新的计算图,并且不用图上的张量和运算不会共享。
shape=[1]代表变量的大小,若为shape[1,4],会产生四个变量。 计算图还可以通过tf.Graph.device指定运行计算的设备。下面的程序将加法计算跑在GPU上:
1.2 数据模型——张量1.2.1 张量概念零阶张量表示标量,也就是一个数。一阶张量为向量,也就是一个一维数组。但张量在TF中的实现并不是直接采用数组的形式,他只是对运行算结果的引用。在张量中并没有真正保存数字,他保存的是如何得到这些数字的计算过程。例如运行如下计算加法的代码并不会的道家发的结果,而是对结果的引用:
?结果如下:
从结果可以看出:一个张量中主要保存了三个属性:名字,维度,类型。 名字不仅是一个张量的唯一标识符,它同样也给出了这个张量是如何计算出来的。因为TF所有计算都可以通过计算图的模型来建立,而计算图上的每一个节点代表了一个计算,计算的结果就保存在张量之中。所以张量和计算图上节点所代表的计算结果是对应的。这样张量的命名就可以通过:'node:src_output' 的形式来给出。node为节点的名称,src_output表示当前张量来自节点的第几个输出。比如上面代码的结果:“add:0”代表add节点的第一个输出。 维度,上面结果中的shape=(2,)说明张量是一个一维数组,这个数组的长度为2。 类型,每一个张量会有一个唯一的类型。TF会对所有参与运算的张量进行类型的检查,不匹配时会报错。如下:一个是整数,一个是浮点
可以通过a = tf.constant([1,2],name='a',dtype=tf.float32)对a的类型进行改变。 TF中共有十四种不同类型:
1.2.2 张量的使用张量使用主要可以分为两大类:
a,b就是对于常量生成这个运算结果的引用。当计算的复杂度增加时,通过张量来引用中间结果可以大大提升代码可阅读性 ? ? 2.当计算图构造完成后,张量用来获得计算结果,也就是会得到真实的数字,虽然张良本身没有存储具体数字,但是根据之后将会介绍的会话(session),就可以得到具体的数字。 1.3 运行模型--会话(session)会话用来执行定义好的计算。session拥有并管理TF程序运行时的所有资源。当计算完成之后需要关闭会话来帮助系统回收资源。 利用会话的一般格式:
还可以用eval方法直接计算一个张量的值。 注意:
注意:
with版本的设置默认会话。 ConfigProto Protocol Buffer可以增强配置 该结构可以配置并行的线程数,GPU分配策略,运算超时时间等参数。 其中最常用的是以下两个参数:
当其为true时,日志将会记录在每个节点被安排在哪个设备上,方便调试。
默认为False,当其为true时,只要以下任意一个条件成立,GPU上的运算都会放到CPU上运行:
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/11 2:42:19- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |