tensorflow入门---第三章

tensorflow程序分为两个阶段:

第一个阶段:定义计算图所有的计算
第二个阶段:执行计算
第一节:计算模型—–计算图
第二节:数据模型—–张量
第三节:运行模型—–会话

第一节:计算图

计算图中的每个节点都代表一个“运算”,边代表运算之间的“依赖关系”。

第二节:张量

张量可以理解为多维数组,n为张量就是n维数组。tensorflow中的张量不直接采用数组的形式,而是运算结果的“引用”。

import tensorflow as tf
#tf.constant是一个计算,这个计算的结果是一个张量,保存在变量a中。
a = tf.constant([1.0,2.0],name = "a")
a = tf.constant([2.0,3.0],name = "b")
result = tf.add(a,b,name = "add")
print result
输出
tensor("add:0",shape=(2,),dtye = float32)

可以用:

tf.Session().run(result)

来得到结果 。

第三节:会话

会话用来执行定义好的运算。会话管理tensorflow程序运行时所拥有的资源。
使用会话的两种模式:
第一种:明确调用会话生成函数和会话关闭函数。

sess = tf.Session()#创建一个会话
sess.run(...)#使用会话关心运行结果
sess.close()#关闭会话,释放资源

第二种:使用python的上下文管理器

with tf.Session as sess:
    #使用这个session关系运行结果
    run.sess(...)
    #不用明确调用关闭会话函数,执行完后会自动回收资源

第四节:tensorflow实现神经网络

tensorflow实现前向传播网络:

a = tf.matmul(x,w1)#a代表中间的隐藏层
y = tf.matmul(a,w2)#y代表输出层

神经网络参数与tensorflow变量(tf.Variable):tensorflow中的变量需要指定初始值,一般使用随机数给变量初始化,例如下面初始化权重。

weights = tf.Variable(random_normal([2,3],stddev = 2))#产生一个2*3的随机矩阵,均值为0,标准差为2。

神经网络中,偏置项bias通常用常数设置初始值。

biases = tf.Variable(tf.zeros([3]))

通过tensorflow训练神经网络模型:
第一步:通过tensorflow表达一个batch的数据
tensorflow通过placeholder传入大量的数据

第一阶段

1.导入tensorflow
2.定义权重变量
3.输入数据x由placeholder输入
4.前向传播

第二阶段

1.启动会话
2.初始化所有变量
3.feed_dict给x喂数据
4.运行会话

tensorflow中的反向传播算法

#预测值与真实值之间的差距
cross_entropy = -tf.reduce_mean(
    y_*tf.log(tf.clip_by_value(y,1e-10,1.0))
)
#定义学习率
learning_rate = 0.001
#反向传播优化参数
train_step =\ tf.train.AdamOptimier(learning_rate).minimize(cross_entropy)#tf.train.AdamOptimier是三种常用优化方法中的一种。
#运行
sess.run(train_step)

猜你喜欢

转载自blog.csdn.net/CTTACM/article/details/80210125