zoukankan      html  css  js  c++  java
  • 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~

    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



    By SkySeraph-2017

    SkySeraph cnBlogs

    本文首发于skyseraph.com“TensorFlow基础”

     

  • 相关阅读:
    (转)Linux 信号说明列表
    linux下socket函数之listen的参数backlog
    (转)auto_ptr与shared_ptr
    (转)关于两次fork
    收集外链
    (转+整理)Linux下Makefile的automake生成全攻略
    LINUX socket编程(转载)errno.h
    (转) socket编程——sockaddr_in结构体操作
    k Nearest Neighbor Search by CUDA
    CUDA Anisotropic Diffusion on a 2D Image
  • 原文地址:https://www.cnblogs.com/skyseraph/p/8057736.html
Copyright © 2011-2022 走看看