tensorflow简介

你正在了解的的tensorflow项目可能会比 Android 系统更加深远地影响着世界!
缘起
2015年11月9日,Google发布人工智能系统TensorFlow并宣布开源。

机器学习作为人工智能的一种类型,可以让软件根据大量的数据来对未来的情况进行阐述或预判。如今,领先的科技巨头无不在机器学习下予以极大投入。Facebook、苹果、微软,甚至国内的百度。Google 自然也在其中。「TensorFlow」是 Google 多年以来内部的机器学习系统。如今,Google 正在将此系统成为开源系统,并将此系统的参数公布给业界工程师、学者和拥有大量编程能力的技术人员,这意味着什么呢?

打个不太恰当的比喻,如今 Google 对待 TensorFlow 系统,有点类似于该公司对待旗下移动操作系统 Android。如果更多的数据科学家开始使用 Google 的系统来从事机器学习方面的研究,那么这将有利于 Google 对日益发展的机器学习行业拥有更多的主导权。

基本使用

TensorFlow五种基本特性:

  1. 使用图 (graph) 来表示计算任务.
  2. 在被称之为 会话 (Session) 的上下文 (context) 中执行图.
  3. 使用 tensor 表示数据.
  4. 通过 变量 (Variable) 维护状态.
  5. 使用 feed 和 fetch 可以为任意的操作( operation) 赋值或者从其中获取数据.

计算图

TensorFlow 程序通常被组织成一个构建阶段和一个执行阶段. 在构建阶段, op 的执行步骤 被描述成一个图. 在执行阶段, 使用会话执行执行图中的 op.

例如, 通常在构建阶段创建一个图来表示和训练神经网络, 然后在执行阶段反复执行图中的训练 op.

构建图

构建图的第一步, 是创建源 op (source op). 源 op 不需要任何输入, 例如 常量 (Constant). 源 op 的输出被传递给其它 op 做运算.
tensorlfow显存管理
1. 按比例
config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.4
session = tf.Session(config=config, …)
2.按需求增长(theano那种)或者干脆自适应然后自动增长:
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
session = tf.Session(config=config, …)

实战:构建卷积神经网络用于mnist数据分类

tensorflow简介_第1张图片

反向传播

tensorflow简介_第2张图片

  由神经元 i 连接到神经元 j 的突触权值的校正值 Δwji(n) 定义如下:

(Δwji(n))=(η)×(δj(n))×(jyi(n))

  • 如果神经元 j 是一个输出层节点, δj(n)=ej(n)φj(vj(n)) ,输出神经元j还是用了非线性激活函数,其实就是softmax激活函数。要不然没有倒数求?
  • 如果神经元 j 是一个隐藏层节点, δj(n)=φj(vj(n))kδk(n)wkj(n)

softmax函数

softmax(x)=normalize(xx)

softmax(x)i=exijexj

tf.random_normal([1,100],mean=0,stddev=1)
和tf.random_normal([1,100],mean=0,stddev=0.1)结果如下图。权重初始化时,方差尽量取小,0.1合适。
tensorflow简介_第3张图片

你可能感兴趣的:(tensorflow简介)