斯坦福tensorflow教程(一) tensorflow概述

课程链接:https://web.stanford.edu/class/cs20si/syllabus.html

Tensorflow简介

TensorFlow™ 是一个使用数据流图进行数值计算的开放源代码软件库。图中的节点代表数学运算,而图中的边则代表在这些节点之间传递的多维数组(张量)。借助这种灵活的架构,您可以通过一个 API 将计算工作部署到桌面设备、服务器或移动设备中的一个或多个 CPU 或 GPU。TensorFlow 最初是由 Google Brain 团队(隶属于 Google 机器智能研究部门)中的研究人员和工程师开发的,旨在用于进行机器学习和深度神经网络研究。但该系统具有很好的通用性,还可以应用于众多其他领域。中文官网

为什么选择tensorflow

  • Python 接口
  • 便捷性/灵活性:可以将计算模型部署到一个或多个桌面、服务器、移动等多种设备(CPUs or GPUs);适用于多种系统 Raspberry Pi, Android, Windows, iOS, Linux到 server farms
  • 可视化:了解下TensorBoard
  • 可以保存/还原模型
  • 自动微分(Auto-differentiation autodiff )
  • 庞大社区,非常流行(>30万提交次数,>8.5万相关开源库)
斯坦福tensorflow教程(一) tensorflow概述_第1张图片
  • 很多惊艳的基于tensorflow的项目
  1. WaveNet: A Generative Model for Raw Audio (DeepMind, 2016)

    斯坦福tensorflow教程(一) tensorflow概述_第2张图片

  2. Dermatologist-level classification of skin cancer with deep neural networks (Esteva, Kuprel, et al.,
    Nature 2017)

    斯坦福tensorflow教程(一) tensorflow概述_第3张图片

  3. Magenta (Google)

Use machine learning to create compelling art and music. Their projects are really fun! For example, please check out Draw Together with a Neural Network.

斯坦福tensorflow教程(一) tensorflow概述_第4张图片

基于Tensorflow的框架

有很多基于Tensorflow构建的APIs,比如一些流行的有Keras,TFLearn和Sonnet.这些高级框架可以实现更快的实验步骤(仅需很少代码),同时这些框架也吸引了大量用户。然而Tensorflow主要的目的不是提供“开箱即用”的机器学习方法。而是,Tensorflow提供了一套强大的计算函数和类,允许用户从实验中定义自己的model。这个过程可能非常复杂,但是可以提供了更多可能性,你可以根据自己的想法,基于Tensorflow构建任何结构的模型

资源

  • The official documentations

  • TensorFlow official sample models

  • StackOverflow
    也有一些英文指导书:

  • Aurélien Géron’s Hands-On Machine Learning with Scikit-Learn and TensorFlow (O’Reilly, March 2017)

  • François Chollet’s Deep Learning with Python (Manning Publications, November 2017)

  • Nishant Shukla’s Machine Learning with TensorFlow (Manning Publications, January 2018)

  • Lieder et al.’s Learning TensorFlow A Guide to Building Deep Learning Systems (O’Reilly, August 2017)

Tensorflow基础

为了理解Tensorflow,我们首先要明确以下几点:

  • 使用图 (graph) 来表示计算任务.
  • 在被称之为 会话 (Session) 的上下文 (context) 中执行图.
  • 使用 tensor 表示数据.
  • 通过 变量 (Variable) 维护状态.

数据流图 Data Flow Graphs

Tensorflow将计算与执行分离开来:
阶段1:创建一张图,定义好图中的就算
阶段2:使用session(会话)去执行图中的计算


斯坦福tensorflow教程(一) tensorflow概述_第5张图片

什么是tensor

tensor 看作是一个 n 维的数组或列表.


斯坦福tensorflow教程(一) tensorflow概述_第6张图片

执行下面并不会输出8,而是输出tensor相关信息


斯坦福tensorflow教程(一) tensorflow概述_第7张图片

需要创建一个session,然后在session计算图,取出a的值


斯坦福tensorflow教程(一) tensorflow概述_第8张图片

为了取回操作的输出内容, 可以在使用 Session 对象的 run() 调用 执行图时, 传入一些 tensor, 这些 tensor 会帮助你取回结果. 在之前的例子里, 我们只取回了单个节点 state, 但是你也可以取回多个 tensor:

input1 = tf.constant(3.0)
input2 = tf.constant(2.0)
input3 = tf.constant(5.0)
intermed = tf.add(input2, input3)
mul = tf.mul(input1, intermed)

with tf.Session() as sess:
  result = sess.run([mul, intermed])
  print result

# 输出:
# [array([ 21.], dtype=float32), array([ 7.], dtype=float32)]

需要获取的多个 tensor 值,在 op 的一次运行中一起获得(而不是逐个去获取 tensor)。

更多关于Tensorflow的计算和操作参考官方文档

你可能感兴趣的:(斯坦福tensorflow教程(一) tensorflow概述)