TensorFlow:Chap3笔记总结

来源:互联网 发布:网络综艺点击率排行榜 编辑:程序博客网 时间:2024/06/13 13:03

1.三个基本概念

1).计算模型——计算图(tf.Graph):所有TensorFlow的程序都会通过计算图的形式表示。计算图的每一个节点都是一个运算,而计算图上的边则表示了运算之间的数据传递关系;同时还保存了运行每个运算的设备信息以及运算之间的依赖关系。计算图提供了管理不同集合的功能,并且TensorFlow会自动维护五个不同的默认集合。

2).数据模型——张量(tf.Tensor):TensorFlow中所有运算的输入、输出都是张量。张量本身并不存储任何数据,只是对运算结果的引用。

3).运算模型——会话(tf.Session):管理了一个TensorFlow程序所拥有的系统资源,所有的运算要通过会话执行。为解决异常退出时资源释放的问题,TensorFlow可以通过python的上下文管理器来使用会话。

#创建一个会话,并通过python中上下文管理器来管理该会话with tf.Session() as sess:    sess.run#不需要调用“Session.close()”来关闭会话

2.TensorFlow训练神经网络步骤: 

1). 定义神经网络结构和前向传播输出结果 
2).定义损失函数及反向传播优化算法 
3).生成会话(tf.Session)并在训练数据上反复运行反向传播优化算法


3.加法计算的实现、通过变量实现前向传播、通过placeholder实现前向传播

import tensorflow as tfprint("tensorflow version: ", tf.VERSION)  # 1.2.1#加法计算def func00_def():        #函数func00_def    a = tf.Variable([1.0, 2.0], name="a")  # 声明a、b两个变量    b = tf.Variable([2.0, 3.0], name="b")    # result = tf.placeholder(tf.float32, shape=(1, 2), name="result");  三个属性:类型、维度、名字    g = tf.Graph()  # 计算图    with tf.Session() as sess:  # 创建会话,通过Python中的上下文管理器来管理会话,自动释放资源        with g.device('/cpu:0'):  # 指定计算运行的设备            init_op = tf.global_variables_initializer()            sess.run(init_op)            result = a + b            print(sess.run(result))#通过变量实现神经网络的参数并实现前向传播def func01_constant():    w1 = tf.Variable(tf.random_normal([2, 3], stddev=1,seed=1))   #声明w1、w2两个变量。2*3的矩阵    w2 = tf.Variable(tf.random_normal([3, 1], stddev=1,seed=1))   #3*1的矩阵 seed设定随机种子,确保每次运行结果一致    x = tf.constant([[0.7, 0.9]])   #将输入的特征向量定义为一个常量。x是一个1*2的矩阵    a = tf.matmul(x, w1)            #前向传播算法获得神经网络的输出    y = tf.matmul(a, w2)    sess = tf.Session()    init_op = tf.global_variables_initializer()    #初始化    #init_op = tf.initialize_all_variables()    sess.run(init_op)    print(sess.run(y))#通过placeholder实现前向传播算法def func02_placeholder():    w1 = tf.Variable(tf.random_normal([2, 3], stddev=1,seed=1))    w2 = tf.Variable(tf.random_normal([3, 1], stddev=1,seed=1))#定义placeholder作为存放输入数据的地方,维度不一定要定义,但维度确定可以降低出错的概率    x = tf.placeholder(tf.float32, shape=(3, 2), name="input")    a = tf.matmul(x, w1)    y = tf.matmul(a, w2)    sess = tf.Session()    init_op = tf.global_variables_initializer()    #init_op = tf.initialize_all_variables()    sess.run(init_op)    # placeholder的赋值    print(sess.run(y, feed_dict={x: [[0.7, 0.9],[0.1,0.4],[0.5,0.8]]}))func00_def()          #函数调用func01_constant()func02_placeholder()
输出:'''tensorflow version:  1.2.1[ 3.  5.][[ 3.95757794]][[ 3.95757794] [ 1.15376544] [ 3.16749239]]'''

以上代码都是书上的实例,但也参考了http://blog.csdn.net/longji/article/details/69472310,博主总结得很到位。

其中,tf.initialize_all_variables已被弃用,使用了tf.global_variables_initializer代替,否则运行过程中会出现警告,要求更新。

另外,使用神经网络解决分类问题主要有4个步骤:
1)提取问题中实体的特征向量作为神经网络的输入。
2)定义神经网络的结构,并定义如何从神经网络的输入得到输出(神经网络的前向传播算法)。
3)通过训练数据来调整神经网络中参数的取值(训练神经网络的过程)。
4)使用训练好的神经网络来预测未知的数据


原创粉丝点击