TensorFlow的菊花图像识别在Android的应用研究+源程序(3)

(3) 本论文设计了一个6层网络层的卷积神经网络,并采取了参数优化、减小误差值等方法提高了图像识别准确率。 (4) 为了更方便的识别图像和展示图


(3) 本论文设计了一个6层网络层的卷积神经网络,并采取了参数优化、减小误差值等方法提高了图像识别准确率。

(4) 为了更方便的识别图像和展示图像识别的效果,将模型移植到Android移动端上,设计了一个基于卷积神经网络的图像识别应用系统。

2 TensorFlow的研究

2.1 系统概述及优点

2.1.1 系统概述

TensorFlow的系统结构分为前端和后端两个子系统:

(1) 前端系统:负责构造计算图;

(2) 后端系统:负责执行计算图。

图 1 TensorFlow系统架构图

如图 1所示,子系统又分为5大模块。Client通过编程语言调用了TensorFlow的编程接口来构建计算图,可用的语言为C++、Python和Java,主流的为Python和C++,而Java还在完善,目前已经推出了适用版本。然后Client再通过调用API并以Session为桥梁,连接TensorFlow后端系统,将构造的计算图发送至Distributed Master,并启动计算图的执行过程。Distributed Runtime将任务分配给各个进程,最后通过接口调用CPU或GPU来计算,或者以分布式的形式远程调用其他服务器来计算[4]。

2.1.2 系统优点

(1) 高度的灵活性

TensorFlow提供了组装数据流图的工具,用户也可以在Tensorflow基础上写代码,同时也可以写代码来丰富底层操作。

(2) 真正的移植性

TensorFlow不仅可以在CPU还可以在GPU上运行,比如笔记本、手机移动设备上,也可以作为云端运行在自己的服务器上或者运行在Docker容器里。

(3) 将科研和产品联系在一起

使用Tensorflow可以将想法迅速运用到产品中,也可以更直接地彼此分享代码,从而提高科研产出率。

(4) 自动求微分

用户只需要定义模型的结构,将这个目标函数和结构结合在一起,并为此添加数据,Tensorflow将自动为你计算相关的微分导数。

(5) 多语言支持

Tensorflow有易用的C++和Python使用界面来构建和执行你的数据流图。

(6) 性能最优化

由于Tensorflow给予了很多有效的支持,让用户使用得更方便,使用户可以自由地将Tensorflow图中的计算元素分配到不同的硬件设备上。

2.2 工作原理和编程模型

TensorFlow是一个基于数据流图(data flow graphs)计算的开源库软件。数据流图用“节点”(nodes)和“线”(edges)的有向图来描述。“节点”一般用来表示数学操作,例如加减乘除,也可以表示数据输入(feed in)的起点、数据输出(push out)的终点。“线”在神经网络中表示权值,即“张量”(tensor)。只要所有的数据准备好,就会调用后端系统,系统会将各个节点依次地分配到各个硬件设备上进行异步计算。

图 2 结构计算图

图 2展示的是一个对于 线性回归的结构计算图。其中W、x和b节点表示数据输入的起点。首先节点W和x输入数据给MatMul节点进行矩阵相乘计算,输出数据到Add节点中与输入数据b进行相加计算,然后输出数据到ReLU节点中进行线性回归计算,最后C节点表示数据输出的终点。