TensorFlow基础
TensorFlow基础
SkySeraph 2017
Email:skyseraph00#163.com
更多精彩请直接访问SkySeraph个人站点:www.skyseraph.com
Overview
TensorFlow 最初由Google Brain团队开发, Google 2015年11月9日发布的开源的AI系统(Apache 2.0),前任(身)为DistBelief, 2017年2月11日发布1.0.0版,同时支持Linux、macOS和Windows以及移动平台,包括Android和iOS。
TensorFlow一般简写为TF。
Awesome AI~
Links
AI/DL 库
如今,AI/DL相关库非常多,Deep Learning Libraries by Language 一文中以语言为分割汇聚了几十种DL库,更多相关资料可参考这个项目的聚合awesome-ai。
其中主流的几种比较如下。
相比于其它AI库,TF突出特点如下:
- Runs not only Windows, Linux, and macOS, also on mobile devices(iOS and Android.)
- provides a Python API TF.Learn(Python API called TF.Learn2) compatible with Scikit-Learn (previously Scikit Flow/skflow)
- provides a API TF-slim (tensorflow.contrib.slim) for neural networks.
- Several other high-level APIs such as Keras or Pretty Tensor.
- includes highly efficient C++ implementations of many ML operations
- a great visualization tool TensorBoard
- launched a cloud service
- A dedicated team, a growing community
Keys
Graph/Tensor
- Graph,图。表示你所搭建的结构
- Session,会话。表示你这次要运行程序
- Tensor,张量 表示数据
- Variable,表示变量
- Feed和Fetch,进行任意的操作赋值或者获取数据
- Node,表示节点,表明数据在图中流动经过的点
- Operation,表示节点的操作,通过operation来加工处理数据
- Data Flow Graph(数据流图) TF用于定义计算结构的有向图, 其节点表示运算(Operation(Op)),其边表示数据(data set(tensors))的输入和输出(Op 传入和从 Op 传出)
TF中的图描述了计算过程,图通过Session的运行而执行计算。Session将图的节点们(即ops)放置到计算设备(如CPUs和GPUs)上,然后通过方法执行它们;这些方法执行完成后,将返回tensors。在Python中的tensor的形式是numpy ndarray对象,而在C/C++中则是tensorflow::Tensor.
TF使用graph来表示计算任务/处理过程. 在被称之为Session的上下文 (context) 中执行图. 使用 tensor 表示数据. 通过Variable 维护状态. 使用 feed 和 fetch 可以为任意的操作(arbitrary operation) 赋值或者从其中获取数据。
TF中使用Tensor来表示所有数据的数据结构,零阶张量为 纯量或标量 (scalar) 也就是一个数值. 比如 [1] 一阶张量为 向量 (vector), 比如 一维的 [1, 2, 3] 二阶张量为 矩阵 (matrix), 比如 二维的 [[1, 2, 3],[4, 5, 6],[7, 8, 9]]。
TPU
TPU( tensor processing unit): 张量处理器, Google为机器学习定制的专用芯片(ASIC),专为Google的深度学习框架TensorFlow而设计。
与图形处理器(GPU)相比,TPU采用低精度(8位)计算,以降低每步操作使用的晶体管数量。降低精度对于深度学习的准确度影响很小,但却可以大幅降低功耗、加快运算速度。同时,TPU使用了脉动阵列的设计,用来优化矩阵乘法与卷积运算,减少I/O操作。此外,TPU还采用了更大的片上内存,以此减少对DRAM的访问,从而更大程度地提升性能。
TensorBoard
GPU设置
GPU device
“/cpu:0”: 你机器的CPU;
“/gpu:0”: 你机器的第一个GPU;
“/gpu:1”: 你机器的第二个GPU;指定GPU。
with tf.device(‘/cpu:1’):a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
......
资源分配。TF默认会使用当前所有GPU资源,控制资源可以采用动态申请或者限制GPU使用率。
动态申请:
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
session = tf.Session(config=config, …)限制GPU使用率:
config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.4
session = tf.Session(config=config, …)
References & Recommends
- Deep Learning Libraries by Language
- deepframeworks 深度学习框架的评估与比较
- Comparing Top Deep Learning Frameworks
- 深度学习框架大战正在进行,谁将夺取“深度学习工业标准”的荣耀?
- Tensorflow-Cheatsheet,ML-Cheatsheet
- Tensorflow-Cheatsheet
- tensors
- TPU
- using_gpu
By SkySeraph-2017
本文首发于skyseraph.com:“TensorFlow基础”
TensorFlow基础的更多相关文章
- TensorFlow基础笔记(0) 参考资源学习文档
1 官方文档 https://www.tensorflow.org/api_docs/ 2 极客学院中文文档 http://www.tensorfly.cn/tfdoc/api_docs/python ...
- TensorFlow基础笔记(3) cifar10 分类学习
TensorFlow基础笔记(3) cifar10 分类学习 CIFAR-10 is a common benchmark in machine learning for image recognit ...
- TensorFlow基础剖析
TensorFlow基础剖析 一.概述 TensorFlow 是一个使用数据流图 (Dataflow Graph) 表达数值计算的开源软件库.它使 用节点表示抽象的数学计算,并使用 OP 表达计算的逻 ...
- 05基于python玩转人工智能最火框架之TensorFlow基础知识
从helloworld开始 mkdir mooc # 新建一个mooc文件夹 cd mooc mkdir 1.helloworld # 新建一个helloworld文件夹 cd 1.helloworl ...
- tensorflow基础篇-1
1.使用占位符和变量 import tensorflow as tf import numpy as np #-----创建变量并初始化----------- def first(): my_var= ...
- TensorFlow应用实战 | TensorFlow基础知识
挺长的~超出估计值了~预计阅读时间20分钟. 从helloworld开始 mkdir 1.helloworld cd 1.helloworldvim helloworld.py 代码: # -*- c ...
- tensorflow基础练习:线性模型
TensorFlow是一个面向数值计算的通用平台,可以方便地训练线性模型.下面采用TensorFlow完成Andrew Ng主讲的Deep Learning课程练习题,提供了整套源码. 线性回归 多元 ...
- TensorFlow 基础概念
初识TensorFlow,看了几天教程后有些无聊,决定写些东西,来夯实一下基础,提供些前进动力. 一.Session.run()和Tensor.eval()的区别: 最主要的区别就是可以使用sess. ...
- TensorFlow 基础知识
参考资料: 深度学习笔记目录 向机器智能的TensorFlow实践 TensorFlow机器学习实战指南 Nick的博客 TensorFlow 采用数据流图进行数值计算.节点代表计算图中的数学操作,计 ...
随机推荐
- [二十五]JavaIO之RandomAccessFile
功能简介 我们之前一直说流顺序的,不能随机访问,的确之前说的IO体系的确如此 但是 RandomAccessFile自成一派 此类的实例支持对随机访问文件的读取和写入 我们之前介绍过DataOutpu ...
- 【细语】C#之扩展方法原理及其使用
1.写在前面 今天群里一个小伙伴问了这样一个问题,扩展方法与实例方法的执行顺序是什么样子的,谁先谁后(这个问题会在文章结尾回答).所以写了这边文章,力图从原理角度解释扩展方法及其使用. 以下为主要内容 ...
- Docker容器运行ASP.NET Core
最近要学习的知识太多,都不知道先学哪些了,原本计划这篇博客是写xamarin.forms中的listview用法,关于listview的用法简书上有一篇介绍的也比较详细,所以暂时先缓一缓,属于次要任务 ...
- VisualStudio移动开发(C#、VB.NET)Smobiler开发平台——AlbumView相册控件的使用方式
AlbumView控件 一. 样式一 我们要实现上图中的效果,需要如下的操作: 从工具栏上的“Smobiler Components”拖动一个AlbumView控件到窗体界面上 修改 ...
- Java开发笔记(三十一)字符类型的表达
前面介绍的Java编程,要么是与数字有关的计算,要么是与逻辑有关的推理,充其量只能实现计算器和状态机.若想让Java运用于更广阔的业务领域,就得使其支撑更加血肉丰满的业务场景,而丰满的前提是能够表达大 ...
- java Calendar的学习分享
前言: 在我们的日常生活中,常常能看见时间.如:在我们的手机里,在一些网站上也能随处看到时间.那我们在项目的开发中,也常常涉及到时间的处理,对于我们经常会遇到和处理的问题.Java中专门为我们处理时间 ...
- Html和Css学习笔记-html进阶-html5属性
我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! 此篇博客是我的复习笔记,html和css学的时间太久了,忘得差不多了,最近要使用一下,所以重新打开html的书略读,后记录了标签 ...
- Html和Css学习笔记-css基础知识
我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! 此篇博客是我的复习笔记,html和css学的时间太久了,忘得差不多了,最近要使用一下,所以重新打开html的书略读,后记录了标签 ...
- arcgis for js学习之Draw类
arcgis for js学习之Draw类 <!DOCTYPE html> <html> <head> <meta http-equiv="Cont ...
- Linux创建和挂载XFS文件系统测试实践
XFS文件系统简介 维基百科关于XFS的简介如下: XFS is a high-performance 64-bit 年,由Silicon Graphics为他们的IRIX操作系统而开发,是IRIX ...