Tensorflow是干什么的?基础入门(安装配置、项目和应用开发、组件和工作原理)

导读:谷歌大脑自2011年成立起开展了面向科学研究和谷歌产品开发的大规模深度学习应用研究,其早期工作即是TensorFlow的前身DistBelief 。DistBelief的功能是构建各尺度下的神经网络分布式学习和交互系统,也被称为”第一代机器学习系统” 。DistBelief在谷歌和Alphabet旗下其它公司的产品开发中被改进和广泛使用 。

这是小编的其他文章,希望对大家有所帮助, 点击即可阅读
人工智能常用的十大算法 人工智能数学基础(二) 十大经典算法(图像处理)

我还整理了整整python人工智能学习笔记、课程视频、面试宝典一并可以无套路免费
分享给大家! 扫描二维码加V免费咨询学习问题领取资料

Tensorflow是干什么的?基础入门(安装配置、项目和应用开发、组件和工作原理)

Tensorflow是干什么的?基础入门(安装配置、项目和应用开发、组件和工作原理)

定义

Tensorflow是干什么的?基础入门(安装配置、项目和应用开发、组件和工作原理)

TensorFlow™是一个基于数据流编程(dataflow programming)的符号数学系统,被广泛应用于各类机器学习(machine learning)算法的编程实现,其前身是谷歌的神经网络算法库DistBelief 。

Tensorflow拥有多层级结构,可部署于各类服务器、PC终端和网页并支持GPU和TPU高性能数值计算,被广泛应用于谷歌内部的产品开发和各领域的科学研究 。

TensorFlow由谷歌人工智能团队谷歌大脑(Google Brain)开发和维护,拥有包括TensorFlow Hub、TensorFlow Lite、TensorFlow Research Cloud在内的多个项目以及各类应用程序接口(Application Programming Interface, API) 。自2015年11月9日起,TensorFlow依据阿帕奇授权协议(Apache 2.0 open source license)开放源代码。

安装和配置

语言与系统支持

TensorFlow支持多种客户端语言下的安装和运行。截至版本1.12.0,绑定完成并支持版本兼容运行的语言为C和Python,其它(试验性)绑定完成的语言为JavaScript 、C++ 、Java 、Go和Swift,依然处于开发阶段的包括C#、Haskell、Julia、Ruby、Rust和Scala。

1、 Python

TensorFlow提供Python语言下的四个不同版本:CPU版本(tensorflow)、包含GPU加速的版本(tensorflow-gpu),以及它们的每日编译版本(tf-nightly、tf-nightly-gpu)。TensorFlow的Python版本支持Ubuntu 16.04、Windows 7、mac OS、10.12.6 Sierra、Raspbian 9.0及对应的更高版本,其中macOS版不包含GPU加速 。安装Python版TensorFlow可以使用模块管理工具pip/pip3 或anaconda 并在终端直接运行。

此外Python版TensorFlow也可以使用Docker安装 :

2、C

TensorFlow提供C语言下的API用于构建其它语言的API,支持x86-64下的Linux类系统和macOS 10.12.6 Sierra或其更高版本,macOS版不包含GPU加速 。安装过程如下 :

下载TensorFlow预编译的C文件到本地系统路径(通常为/usr/local/lib)并解压缩。

使用ldconfig编译链接

此外,用户还可以提取其他路径中的文件并手动编译链接。

[En]

In addition, users can extract files in other paths and compile links manually.

编译C接口时需确保本地的C编译器(例如gcc)能够访问TensorFlow库 。

3、配置GPU

TensorFlow支持在Linux和Window系统下使用统一计算架构(Compute Unified Device Architecture,CUDA )高于3.5的NVIDIA GPU 。配置GPU时要求系统有NVIDIA GPU驱动384.x及以上版本、CUDA Toolkit和CUPTI(CUDA Profiling Tools Interface)9.0版本、cuDNN SDK7.2以上版本。可选配置包括NCCL 2.2用于多GPU支持、TensorRT 4.0用于TensorFlow模型优化 。

在Linux下配置GPU时,将CUDA Toolkit和CUPTI的路径加入$LD_LIBRARY_PATH环境变量即可。对于CUDA为3.0或其它版本的NVIDIA程序,需要从源文件编译TensorFlow 。对Windows下的GPU配置,需要将CUDA、CUPTI和cuDNN的安装路径加入%PATH%环境变量,在DOS终端有如下操作 :

Linux系统下使用docker安装的Python版TensorFlow也可配置GPU加速且无需CUDA Toolkit :

版本兼容性

TensorFlow的公共API版本号使用语义化版本2.0标准 ,包括主版本号.次版本号.修订号,其中主版本号的更改不是向下兼容的,已保存的TensorFlow工作可能需迁移到新的版本; 次版本号的更改包含向下兼容的性能提升;修订号的更改是向下兼容的问题修正 。

TensorFlow支持版本兼容的部分包括协议缓冲区文件、所有的C接口、Python接口中的tensorflow模块以及除tf.contrib和其它私有函数外的所有子模块、Python函数和类 。更新不支持版本兼容的部分为:包含”试验性(experimental)”字段的组件、使用除C和Python外其它语言开发的TensorFlow API、以GraphDef形式保存的工作、浮点数值特定位的计算精度、随机数、错误和错误消息 。其中GraphDef拥有与TensorFlow相独立的版本号,当TensorFlow的更新放弃对某一GraphDef版本的支持后,可能有相关工具帮助用户将GraphDef转化为受支持的版本 。需要指出,尽管 GraphDef的版本机制与TensorFlow相独立,但对GraphDef的更改仍受限于语义版本控制,即只能在TensorFlow主版本号之间移除或更改功能。此外,修订版本之间实施GraphDef的向前兼容 。

组件和工作原理

核心组件

分布式TensorFlow的核心组件(core runtime)包括:分发中心(distributed master)、执行器(dataflow executor/worker service)、内核应用(kernel implementation)和最底端的设备层(device layer)/网络层(networking layer)

分发中心从输入的数据流图中剪取子图(subgraph),将其划分为操作片段并启动执行器。分发中心处理数据流图时会进行预设定的操作优化,包括公共子表达式消去(common subexpression elimination)、常量折叠(constant folding)等 。

执行器负责图操作(graph operation)在进程和设备中的运行、收发其它执行器的结果。分布式TensorFlow拥有参数器(parameter server)以汇总和更新其它执行器返回的模型参数。执行器在调度本地设备时会选择进行并行计算和GPU加速 。

内核应用负责单一的图操作,包括数学计算、数组操作(array manipulation)、控制流(control flow)和状态管理操作(state management operations)。内核应用使用Eigen执行张量的并行计算、cuDNN库等执行GPU加速、gemmlowp执行低数值精度计算,此外用户可以在内核应用中注册注册额外的内核(fused kernels)以提升基础操作,例如激励函数和其梯度计算的运行效率 。

单进程版本的TensorFlow没有分发中心和执行器,而是使用特殊的会话应用(Session implementation)联系本地设备。TensorFlow的C语言API是核心组件和用户代码的分界,其它组件/API均通过C语言API与核心组件进行交互 。

低阶API

张量是TensorFlow的核心数据单位,在本质上是一个任意维的数组。可用的张量类型包括常数、变量、张量占位符和稀疏张量 。

变量是可以通过操作改变取值的特殊张量 。变量必须先初始化后才可使用,低阶API中定义的变量必须明确初始化,高阶API例如Keras会自动对变量进行初始化。TensorFlow可以在tf.Session开始时一次性初始化所有变量,对自行初始化变量,在tf.Variable上运行的tf.get_variable可以在定义变量的同时指定初始化器

数据流图 (tf.Graph)和会话(tf.Session):TensorFlow在数据流编程下运行,具体地,使用数据流图(tf.Graph)表示计算指令间的依赖关系,随后依据图创建会话(tf.Session)并运行图的各个部分 。tf.Graph包含了图结构与图集合两类相关信息,其中图结构包含图的节点(tf.Operation)和边缘(张量)对象,表示各个操作组合在一起的方式,但不规定它们的使用方式,类似于汇编代码;图集合是在tf.Graph中存储元数据集合的通用机制,即对象列表与键(tf.GraphKeys)的关联 。

Tensorflow是干什么的?基础入门(安装配置、项目和应用开发、组件和工作原理)

构建tf.Graph时将节点和边缘对象加入图中不会触发计算,图构建完成后将计算部分分流给tf.Session实现计算。tf.Session拥有物理资源,通常与Python的with代码块中使用,在离开代码块后释放资源 。在不使用with代码块的情况下创建tf.Session,应在完成会话时明确调用tf.Session.close结束进程。调用Session.run创建的中间张量会在调用结束时或结束之前释放。tf.Session.run是运行节点对象和评估张量的主要方式,tf.Session.run需要指定fetch并提供供给数据(feed)字典,用户也可以指定其它选项以监督会话的运行 。这里使用低阶API以批量梯度下降的线性回归为例展示tf.Graph的构建和tf.Session的运行

保存和恢复:TensorFlow的低阶API可以保存模型和学习得到的变量,对其进行恢复后可以无需初始化直接使用。对张量的保存和恢复使用tf.train.Saver

高阶API

Estimators:工作流程

  • 建立数据集导入函数:可以使用TensorFlow的数据导入工具tf.data.Dataset或从Nnmpy数组创建数据集导入函数。
  • 定义特征列:特征列(tf.feature_column)包含了训练数据的特征名称、特征类型和输入预处理操作。
  • 调出预创建的Estimator模型:可用的模型包括基础统计学(baseline)、梯度提升决策树(boosting desicion tree)和深度神经网络的回归、分类器。调出模型后需提供输入特征列、检查点路径和有关模型参数(例如神经网络的隐含层结构)。
  • 训练和评估模型:所有预创建模型都包含train和evaluate接口用于学习和评估。

Keras:Keras以TensorFlow的Python API为基础提供了神经网络、尤其是深度网络的构筑模块,并将神经网络开发、训练、测试的各项操作进行封装以提升可扩展性和简化使用难度 。在TensorFlow下可以直接导出Keras模块使用

Eager Execution:Eager Execution是基于TensorFlow Python API的命令式编程环境,帮助用户跳过数据流编程的图操作,直接获取结果,便于TensorFlow的入门学习和模型调试,在机器学习应用中可以用于快速迭代小模型和小型数据集 。Eager Execution环境只能在程序的开始,即导入tensorflow模块时启用

Data:图像处理问题中,tf.data可以对输入图像进行组合或叠加随机扰动,增大神经网络的训练收益;在文字处理问题中,tf.data负责字符提取和嵌入(embedding),后者将文字转化为高维向量,是进行机器学习的重要步骤 。tf.data包含两个类:tf.data.Dataset和tf.data.Iterator,Dataset自身是一系列由张量构成的组元,并包含缓存(cache)、交错读取(interleave)、预读取(prefetch)、洗牌(shuffle)、投影(map)、重复(repeat)等数据预处理方法、Iterator类似于Python的循环器,是从Dataset中提取组元的有效方式

Tensorflow是干什么的?基础入门(安装配置、项目和应用开发、组件和工作原理)

项目和应用开发

项目

TensorFlow Hub

TensorFlow Hub是一个允许用户发布、共享和使用TensorFlow模块的库开发项目。用户可以将TensorFlow数据流图或其部分使用Hub进行封装并移植到其它问题中再次利用 。TensorFlow Hub页面列出了由谷歌和DeepMind提供的封装模型,其主题包括字符嵌入、视频分类和图像处理 。

TensorFlow Extended (TFX)

TFX是谷歌基于TensorFlow开发的产品级机器学习平台,其目标是是对产品开发中的模型实现、分析验证和业务化操作进行整合,在实时数据下完成机器学习产品的标准化生产 。TFX包含三个算法库:TensorFlow Data Validation对机器学习数据进行统计描述和验证、TensorFlow Transform对模型数据进行预处理、TensorFlow Model Analysis对机器学习模型进行分析,提供表现评分。另有TensorFlow Serving作为模型业务化的高性能系统,提供模型接口和管理 。

TensorFlow Probability (TFP)

TFP是在TensorFlow Python API基础上开发的统计学算法库,其目标是方便用户将概率模型和深度学习模型相结合使用 。TFP包含大量概率分布的生成器、支持构建深度网络的概率层(probabilistic layers)、提供变分贝叶斯推断(Variational inference)和马尔可夫链蒙特卡罗方法(Markov chain Monte Carlo)和一些特殊的优化器,包括Nelder-Mead方案、BFGS算法(Broyden-Fletcher-Goldfarb-Shanno algorithm)和SGLD(Stochastic Gradient Langevin Dynamics) 。

应用开发

TensorFlow.js

TensorFlow.js是TensorFlow的JavaScript API,主要用于网页端的机器学习应用开发。TensorFlow.js可以在浏览器和Node.js下转化和运行TensorFlow构建的机器学习模型,并使用网页端数据对模型进行训练 。截至2018年9月18日,TensorFlow.js的版本号为0.13 。

TensorFlow Lite

TensorFlow Lite是为移动和嵌入式设备运行机器学习代码的问题提供解决方案。TensorFlow Lite包含优化算法以提升Android、iOS等系统下机器学习模型的响应时间并降低文件大小。谷歌内部的许多移动端产品,包括谷歌相册、谷歌邮箱客户端、谷歌键盘等都使用TensorFlow Lite部署了人工智能算法 。

Swift for TensorFlow

Swift for TensorFlow是开源版Swift的TensorFlow API开发项目。Swift for TensorFlow类似于Eager Execution可以直接执行数据流图且性能更高 。截至10月13日,Swift for TensorFlow处于早期开发状态。

小编整理了有关Python人工智能的资料,有图像处理opencv\自然语言处理、机器学习、数学基础等资源库,想学习人工智能或者转行到高薪资行业的,大学生也非常实用,无任何套路免费提供, 扫码+vx( 更方便)领取,

欢迎您扫码免费咨询我的学习问题。

[En]

You are welcome to scan the code to consult me about learning problems for free.

Tensorflow是干什么的?基础入门(安装配置、项目和应用开发、组件和工作原理)

Original: https://blog.csdn.net/Java_college/article/details/120719214
Author: AI每天一点点
Title: Tensorflow是干什么的?基础入门(安装配置、项目和应用开发、组件和工作原理)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/514620/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 知识图谱01:知识图谱的定义

    公众号:数据挖掘与机器学习笔记 知识图谱(knowledge graph)是以图的形式表现客观世界中的实体(概念、人、事物)及其之间的关系的知识库。2012年,谷歌提出了知识图谱的…

    人工智能 2023年6月10日
    083
  • 【TensorFlow】TensorFlow推荐系统(TensorFlow Recommenders)

    从电商到短视频,推荐系统被广泛应用于各个场景,但实际上要打造好一个有效的推荐系统并不容易。 TensorFlow Recommenders 就是这样一个为了打造高效可扩展的推荐系统…

    人工智能 2023年5月25日
    090
  • OpenGL之环境映射

    1.1 环境映射(Environment Mapping) 具有光滑表面的物体会反射形成周围环境的影响,是一种环境光效果。光线跟踪等(全局光照)可以实现这种效果,但是效率太低,可以…

    人工智能 2023年6月30日
    087
  • 【数据分析】:什么是数据分析?

    【数据分析】:什么是数据分析? 🌸个人主页:JoJo的数据分析历险记 📝个人介绍: 统计学top3研究生 💌如果文章对你有帮助,欢迎✌ 关&#x6CE…

    人工智能 2023年6月11日
    088
  • Matlab数学建模学习(3)– 神经网络基础(函数拟合和分类)

    1. 函数拟合(函数逼近) 1.1 拟合数据(神经网络拟合、多项式拟合、线性回归) 那我们给出一组数据,看看三种方法的运用 X=[-5 -4 -3 -2 -1 0 1 2 3 4 …

    人工智能 2023年7月13日
    071
  • 每天五分钟机器学习:神经网络比逻辑回归强大的本质

    本文重点: 本文就是想讲清楚 两点: 第一点是神经网络如何进行计算的,这个计算就叫做前向传播。 第二点是神经网络可以理解为逻辑回归,它和逻辑回归不同的是,逻辑回归是直接使用样本x,…

    人工智能 2023年6月16日
    087
  • 数字化时代下,企业如何做好数据治理?

    随着人工智能、互联网、物联网、区块链等新一代信息技术的普及应用,社会的信息化、数字化程度不断加深。在疫情的影响下,整个时代的数字化技术加速发展,将数字化服务及数字化应用快速普及到人…

    人工智能 2023年7月16日
    099
  • pysot-master-train.py 运行记录

    ‘/pysot-master/training_dataset/coco/readme.md’ 根据readme进行操作: 先下载coco数据集压缩包 解压…

    人工智能 2023年6月27日
    088
  • 图像风格迁移

    文章目录 前言 一、传统的图像风格迁移(Traditional style transfer) * 1.1计算机图形学领域和计算机视觉领域(Computer Graphics&am…

    人工智能 2023年5月26日
    0147
  • 什么是决策树回归

    什么是决策树回归? 决策树回归是一种机器学习算法,用于从输入变量中预测连续目标变量的值。它使用树状结构来建模数据,其中每个内部节点表示一个特征或属性,每个边表示根据该属性进行的判断…

    人工智能 2023年12月31日
    048
  • 1.机器学习概念及相关术语解释

    一丶 机器学习概念 概述: 机器学习是人工智能具有智能的必要技术手段,人工智能的核心,机器学习是致力于研究如何通过CPU和GPU(图形图像处理器)的计算,利用经验或数据来改善计算机…

    人工智能 2023年5月31日
    086
  • 浅析图像注意力机制

    图像注意力机制 对于深度学习图像算法,已经内卷很严重了,没有点自注意力,新设计模块都拿不出手。借着知识整理的机会,总结一下之前了解到的图像自注意力机制,供大家八股 (不是),供大家…

    人工智能 2023年6月16日
    098
  • 电力系统的常用仿真模块MATLAB/SIMULINK(1)

    本文的内容是参考的《基于MATLAB的电气控制系统图形化仿真技术》 在进行电力系统的仿真时,先要了解构成电力系统的各元件。本章描述了相关的电力系统模块在MATLAB/SIMULIN…

    人工智能 2023年7月25日
    0105
  • 【Linux】linux下安装opencv3.4.5

    【LINUX】linux下安装opencv3.4.5 1.版本说明 2.获取opencv安装依赖包 3.官方网下载source文件 4.cmake 编译source源文件 * 1….

    人工智能 2023年7月20日
    073
  • 支持向量机实现鸢尾花数据集分类matlab

    问题描述: 在进行感知机,以及逻辑斯蒂回归问题的讨论中,我们都以二分类问题为例。其中对于线性不可分的数据集,感知机和逻辑斯蒂回归已然失效,逻辑斯蒂回归对感知机进行的优化,是进行了一…

    人工智能 2023年7月2日
    085
  • Python 实现深度学习

    写在最前, 我把代码和整理的文档放在github上了 最近由于疫情被困在家,于是准备每天看点专业知识,准备写成博客,不定期发布。 博客大概会写5~7篇, 主要是”解剖&…

    人工智能 2023年6月4日
    083
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球