TensorFlow学习笔记1-入门

TensorFlow学习笔记1-入门


作者: YunYuan
***

写在前面

本笔记是我学习TensorFlow官方文档中文版的读书笔记,由于尚未搭建好Github的个人博客的评论功能,故尚不方便与各位交流。如有问题,可邮箱联系。

TensorFlow运算的本质是有状态的数据流式图。TensorFlow的直译是“流动的张量”。

特点:计算模型简洁灵活,计算性能显著提升,支持更多的异构计算系统。

一些概念:

  • 有向图(计算图):由节点(node)和边(edge)组成。节点表示运算操作,节点与节点之间的是边。整个计算图描述了计算流程。
  • 节点:表示运算操作,每个节点可以有任意多的输入和任意多的输出。
  • 边:在中流动(flow)的是张量(tensor)。
  • 有一种特殊的边没有数据流动,这种边是依赖控制。作用是让它的起始节点执行完再执行目标节点,从而进行控制。

简单的有向图示例如图:

其代码表示为:

import tensorflow as tf
b=tf.Variable(tf.zeros([100])) # 生成100维的向量,初始化为0
W=tf.Variable(tf.random_uniform([784,100],-1,1)) # 生成784x100的随机矩阵W x=tf.placeholder(name="x") # 输入的Placeholder

relu=tf.nn.relu(tf.matmul(W, x)+b) # ReLU(Wx+b)
C=[...] # 根据ReLU函数的结果计算Cost

s=tf.Session()
for step in range(0, 10):
  input=...construct 100-D input array... # 为输入创建一个100维的向量
  result=s.run(C, feed_dict={x: input}) # 获取Cost,供给输入x
  print(step, result)

在代码中,Variable表示参量,即你要训练的参数,而Placeholder表示输入数据,即训练集。

TensorFlow内建运算操作

  • 标量运算:Add、Sub、Mul、Div、Exp、Log、Greater、Less、Equal
  • 向量运算:Concat、Slice、Split、Constant、Rank、Shape、Shuffle
  • 矩阵运算:MatMul、MatrixInverse、MatrixDeterminant
  • 带状态的运算:Variable、Assign、AssignAdd
  • 神经网络组件:SoftMax、Sigmoid、ReLU、Convolution2D、MaxPooling
  • 存储、恢复:Save、Restore
  • 队列及同步运算:Enqueue、Dequeue、MutexAcquire、MutexRelease
  • 控制流:Merge、Switch、Enter、Leave、NextIteration

更进一步

sess.run()函数里的参数通常有两种:

  • 一种是tensor,将feed_dict中的数据送进计算图中计算一次,并取出tensor

  • 另一种是train=optimizer.minimize(loss),即训练动作(对loss进行优化),每执行一次sess.run(train)会优化一次。


参考资料

  1. TensorFlow官方文档中文版
  2. 黄文坚 唐源, TensorDlow实战 , 201703, 电子工业出版社

猜你喜欢

转载自www.cnblogs.com/charleechan/p/11435078.html