深度学习框架之tensorflow

TensorFlow是什么?

TensorFlow基于数据流图,用于大规模分布式数值计算的开源框架。节点表示某种抽象的计算,边表示节点之间相互联系的张量。

计算图实例

TensorFlow支持各种异构的平台,支持多CPU/GPU,服务器,移动设备,具有良好的跨平台的特性;TensorFlow架构灵活,能够支持各种网络模型,具有良好的通用性;此外,TensorFlow架构具有良好的可扩展性,对OP的扩展支持,Kernel特化方面表现出众。

TensorFlow最初由Google大脑的研究员和工程师开发出来,用于机器学习和神经网络方面的研究,于2015.10宣布开源,在众多深度学习框架中脱颖而出,在Github上获得了最多的Star量。

前世今生:

诞生的大环境

• 15年9月发布0.1版本;17年2月发布1.0版本;19年3月发布2.0版本。

• 15年同类型框架:

• Ski-learn: Machine Learning, 不支持GPU;

• Caffe: 第一个面向深度学习的框架,但不支持自动求导;

• Keras: 只提供API接口;

• Torch: Lua语言;

• Teano: 开发调试难。

当下市场环境

• 当下同类型框架:

• Caffe: Facebook

• Caffe2: PyTorch(最新版本的Caffe2 作为PyTorch的C++后端已经并入到PyTorch里去)。

• Torch–PyTorch。PyTorch当下非常流行的框架,集合了Torch和Caffe2,Facebook主推。

• Teano: Google推出 Tensorflow1.0 ----Tensorflow2.0。

V1.0市场占有率

• 截止到TensorFlow1.1.3版本:

• Github中TensorFlow有大约121,372的store:

• PyTorch有25,181的store:

流行框架得分

系统概述

整个系统从底层到上层可分为七层:

1.最底层是硬件计算资源,支持CPU、GPU;

2.支持两种通信协议;

3.数值计算层提供最基础的计算,有线性计算、卷积计算;

4.数据的计算都是以数组的形式参与计算;

5.计算图层用来设计神经网络的结构;

6.工作流层提供轻量级的框架调用

7.最后构造的深度学习网络可以通过TensorBoard服务端可视化

技术架构

整体技术栈分为两部分:

1.前端系统:提供编程模型,负责构造计算图;

2.后端系统:提供运行时环境,负责执行计算图。

组件交互

master节点给两种类型的节点分发任务:

1./job:ps/task:0: 负责模型参数的存储和更新

2./job:worker/task:0: 负责模型的训练或推理

会话(Session)

客户端使用会话来和TF系统交互,一般的模式是,建立会话,此时会生成一张空图;在会话中添加节点和边,形成一张图,然后执行。

实现(Implementation)

1.TF中最重要的Tensor被支持的非常全面,8bit到64bit, signed和unsigned,IEEE float/double,complex number等等。使用引用计数来保存tensor,当计数到0时,tensor被回收。

2.客户端,用户会使用;与master和一些worker process交流

3.master,用来与客户端交互,同时调度任务;

4.worker process,工作节点,每个worker process可以访问一到多个device。

5.device,TF的计算核心,通过将device的类型、job名称、在worker process中的索引将device命名。可以通过注册机制来添加新的device实现,每个device实现需要负责内存分配和管理调度TF系统所下达的核运算需求。

跨设备�通信

当两个需要通信的op在不同的机器上时,就需要跨设备通信,当它们需要通信时,TF会在它们之间的联系中添加Send和Recv节点,通过Send和Recv之间进行通信来达到op之间通信的效果。如上所示。

梯度计算( Gradient Computation )

连接式的机器学习算法往往需要使用梯度下降法来求取参数,TF通过扩展图的方式实现了自动求导,TF做法如下:

对于每张计算图,得到从输入I到输出C的路径,并从C到I回溯,回溯过程中对于路径上的每个节点A,添加另一个节点来计算A’来计算偏导,在计算偏导的过程中,A’不仅仅将上一层传下来的反向导数作为输入,还可能将A的输入和输出也作为其输入。

数据并行计算( Data Parallel Training)

通过数据并行的方式来提升模型的效率,比如,假如每次模型的mini-batch是1000个样本,那么,切成10份,每份100个,然后将模型复制10份,每份都将梯度传到参数服务器上。

数据切分也分为同步和异步两种方式,同步的切分是等待每个独立的model传上来的梯度都到齐后再进行更新,这样和一个大的batch没有区别。异步的切分则是不用等待,每个独立的模型的参数更新直接更新。

模型并行训练( Model Parallel Training)

还可以对模型进行切分,让模型的不同部分执行在不同的设备上,这样可以一个迭代的样本可以在不同的设备上同时执行。如上图所示的LSTM模型


TensorFlow Lite:端侧机器学习框架

 TensorFlow Lite(TFLite)是一个轻量、快速、跨平台的专门针对移动和IoT场景的开源机器学习框架,是TensorFlow的一部分,支持安卓、iOS、嵌入式Linux以及MCU等多个平台部署.


TensorFlow Quantum: 量子机器学习框架

TensorFlow Quantum(TFQ)是用于混合量子经典机器学习的 Python 框架,主要致力于建模量子数据。

该框架允许量子算法研究人员和机器学习研究人员探索将量子计算与机器学习结合在一起,训练量子模型。

TensorFlow Quantum 重点在于量子数据集和建立混合量子经典模型。它集成了许多量子算法和逻辑,并提供与现有 TensorFlow API 兼容的量子计算原函数,以及高性能量子电路模拟器。

目前,TensorFlow Quantum 主要面向在经典量子电路模拟器上执行量子电路。将来它能够在实际量子处理器上执行量子电路。

tensorflow项目应用

项目:Neural Style

这是最酷的TensorFlow GitHub项目之一。神经风格是将一张照片的风格迁移到另一张照片上的过程,同时保留相关的特张。简单的来说,通过这个项目,你可以使用TensorFlow创建自己的Prisma应用程序。

如上图所示,把梵高画作的风格,迁移到一张狮子的照片上,就得到一个星空风格的狮子照片,这就是所谓的风格迁移。下面再展示一组这个项目的风格迁移,能把这张狮子的照片,变成哪些非常有趣的效果。

这个项目在风格迁移的同时,还能对图像进行语义分割。进而实现对内容的前景、背景进行不同的风格迁移处理。这个过程如下图所示:

另外这个算法还能适用于视频处理。

上述图片处理使用的软硬件如下:

CPU: Intel Core i7-6800K@3.4GHz×12

GPU: NVIDIA GeForce GTX 1080/PCIe/SSE2

OS: Linux Ubuntu 16.04.1 LTS 64-bit

CUDA: 8.0

python: 2.7.12

tensorflow: 0.10.0rc

opencv: 2.4.9.1

GitHub地址如下:

https://github.com/cysmith/neural-style-tf

项目:Mozilla Deep Speech

这个GitHub项目使用TensorFlow将语音转换为文本。语音转文本是一个热门的机器学习领域,然而各地的人们有着不同的口音,这也是一个难以解决的问题。不过仍然可以通过深度学习实现非常不错的准确性。

其实这个项目,是一个基于百度DeepSpeech架构的TensorFlow实现。换句话说,这个项目是百度的内核,Google的外貌。

百度的相关论文地址在此:

https://arxiv.org/abs/1412.5567


DeepSpeech是吴恩达带领百度团队研发出的成果,最早发布于2014年底。今年初,百度基于DeepSpeech2,开发出一款名为SwiftScribe的应用(swiftscribe.ai),可以把语音文件更为快速、便捷的转换为文字。目前只限于英文。

回到这个项目。

所需软件环境如下:

Git Large File Storage

TensorFlow 1.0 or 1.1

SciPy

PyXDG

python_speech_features (nb: deprecated)

python sox

pandas

DeepSpeech native client libraries

如果你有至少8GB显存的英伟达GPU,强烈建议安装支持GPU的TensorFlow,因为使用GPU的训练比CPU快得多。

GitHub地址如下:

https://github.com/mozilla/DeepSpeech

项目:句子分类

句子分类就是识别句子类型的过程。例如,对于“食物非常糟糕”这个句子,你可能希望将其分类为正面句子或负面句子,这也被称为情绪分析。这个问题的难点在于:句子结构带来的复杂性。

利用卷积神经网络,我们可以尝试构建一个强大的文本分类器。

这里介绍的项目,是Yoon Kim论文《Convolutional Neural Networks for Sentence Classification(使用卷积神经网络进行句子分类)》的简单实现。这个论文的地址如下:

https://arxiv.org/abs/1408.5882

通过一个简单的CNN卷积神经网络,只进行很少的超参数调整和静态矢量,就可以得到出色的句子分类结果。

所需软件环境如下:

Python 3

Tensorflow > 0.12

Numpy

GitHub地址如下:

https://github.com/dennybritz/cnn-text-classification-tf

项目:图像分类/物体识别

图像分类,也就是训练系统识别猫猫狗狗,或者车道、海滩、天际线等场景。计算机视觉是一个范围巨大的领域,从面部识别到情感识别,甚至可以进行视觉气体泄漏检测。虽然实现流程各异,但底层系统是相通的。

所以作者创建了一个TensorFlow GitHub库,其中包括两个相互关联的部分。第一部分:能够识别1000个对象的TensorFlow图像分类器。第二部分:创建并训练一个全新的图像分类器。

我们先来看看第一部分,猫狗识别动态图

Google的TensorFlow图像识别系统是目前最准确的图像分类软件。所谓图像识别,就是对图片中的内容进行识别,然而这并非对任意图片都能识别。

只有被训练过的对象,系统才能识别。例如,我们用三个类型训练分类器:猫、狗和牛。三个分类器只能识别相应类别中的一个。如果给出一张骆驼的图片会怎样?图片仍会通过一个分类器,但是置信率会非常的低。

项目:基于TensorFlow.js实现web版你画我猜

代码:https://github.com/zaidalyafeai/zaidalyafeai.github.io/tree/master/sketcher

Demo:https://zaidalyafeai.github.io/sketcher/

Google Colab notebook:https://colab.research.google.com/github/zaidalyafeai/zaidalyafeai.github.io/blob/master/sketcher/Sketcher.ipynb




入门教程

用TensorFlow搭建一个万能的神经网络框架(持续更新)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,784评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,745评论 2 378
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,702评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,229评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,245评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,376评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,798评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,471评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,655评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,485评论 2 318
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,535评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,235评论 3 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,793评论 3 304
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,863评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,096评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,654评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,233评论 2 341

推荐阅读更多精彩内容