Learning Tensorflow(1)--- 入门

Tensor 是TensorFlow的数据结构,Flow是TensorFlow的计算模型,它直观地表达了张量之间通过计算相互转化的过程。TensorFlow 是一个通过计算图的形式表述计算的编程系统。

 

张量结构

张量:

一:对中间计算结果的引用,这样方便获取中间计算结果同时提高了代码的阅读性。

二:可以用来获得计算结果,这需要配合session.

从功能的角度,张量可以被简单的理解为多维数组,但从实际的角度来讲,张量中并没有保存数字,而保存的是如何得到这些数字的计算过程。

Tensor("add_10:0", shape=(2,), dtype=float32)

Name属性:

name是一个Tensor的唯一标识符,同时name也给出了该Tensor是如何计算出来的。计算图上的node和计算是相对应的。

计算的结果保存在Tensor中,Tensor的name属性可以通过”node:src_output”形式给出。

  1. node为节点的名称-
  2. src_output表示Tensor来自当前节点的第几个输出。

Shape属性:

shape属性描述了一个Tensor的维度信息

Type属性:

每一个Tensor都有一个唯一的类型,TensorFlow会对所有参与计算的Tensor进行类型检查,当发现类型不匹配时会报错。

 

计算图

TensorFlow程序一般可以分为两个阶段。

第一阶段:定义计算图中所有的计算。

第二阶段:执行计算。

 

定义计算图中所有的计算

import tensorflow as tf
a = tf.constant([1.0,2.0],name='a')
b = tf.constant([2.0,3.0],name='b')
result = tf.add(a,b,name='add')
print(result)
>>  Tensor("add_10:0", shape=(2,), dtype=float32)

 

执行计算

a,b,result都是张量,tf.constant  tf.add代表了张量之间的计算关系。

会话

用于执行定义好的运算

import tensorflow as tf
a = tf.constant([1.0,2.0],name='a')
b = tf.constant([2.0,3.0],name='b')
result = tf.add(a,b,name='add')

 

//执行运算

sess = tf.Session()

//在计算张量取值的时候,需要指定会话
 

print(sess.run(result))  // print(result.eval(session=sess))
sess.close()
或者,使用with可以异常退出时资源释放的问题。
With tf.session() as sess:
Print(srss.run(result))
或者,指定默认会话,指定默认会话后才可以计算张量的取值
sess = tf.Session()
with sess.as_default():
print(result.eval());

 

在交互式环境下,tf.InteractiveSession函数可以省去将产生的会话注册为默认会话的过程。

Sess = tf.InteractiveSession()
Print(result.eval())
Sess.close()

神经网络

在使用tensorflow构建神经网络时,tensorflow提供了特定的数据结构(变量,占位符等)用于存储特定的网络数据(权重,偏置等等)。

变量

变量(tf.Variable)的作用是保存和更新神经网络中的参数。

变量需要制定初始值,在神经网络中一般使用随机数给变量进行初始化,设定初始化方式。

Weights = tf.Variable(tf.random_normal([2,3], stddev=2))

Bias = tf.variable(tf.zeros([3]))

该语句会产生一个2*3的矩阵,矩阵中的元素为均值为0,标准差为2的随机数;

虽然在变量定义时给出了初始化的方法,但这个芳芳并没有被执行。

所以在神经网络运行之前,需要使用session来运行变量初始化

Sess.run(weights.initrilizer)

TensorFlow提供了一种更加便捷的方式来完成变量初始化过程,通过tf.initialize_all_variables函数实现初始化所有变量的过程。

Init_op = tf.initailize_all_variables()

Sess.run(ini_op)

占位符

TensorFlow提供了placeholder机制用于提供输入数据,placeholder相当于定义了一个位置,这个位置中的数据在程序运行时再指定。这样在程序中就不需要生成大量常量来提供输入数据。

使用占位符时,需要通过feed_dict来指定x的初始取值。

使用占位符实现前向传播

OP

OP表示某种抽象计算,它拥有0个或多个「输入/输出」,及其0个或多个「属性」。其中,输入/输出以Tensor的形式存在。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章