人工智能实践:Tensorflow笔记(二):TensorFlow框架

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hxxjxw/article/details/89735398

1、使用Tensorflow搭建神经网络时,通常用张量表示数据,用计算图搭建神经网络,用会话执行计算图,再优化神经网络的参数(权重),获得更准确的模型

2、张量与计算图

      张量(tensor):多维数组(列表)

      阶:张量的维数
      0阶张量就是标量

判断张量是几阶的,就可以看方括号有几个,n个就是n阶

张量可以表示0阶到n阶数组(列表)

        表示result是一个名叫add:0的张量,是一个长度为2的一维数组,数据类型是浮点型的

        这段代码所描述的就是一段计算过程,就是一张计算图  
        输出内容只显示出结果是个张量,并没有运算张量具体的值

        计算图只描述了计算过程,不计算运算结果

3、计算图的定义

      计算图(Graph):搭建神经网络的计算过程,只搭建,不运算(是承载一个或多个计算节点的一张图)

       神经网络的基本单元是神经元,上图就是神经元的基本模型,其实就是数学里的乘加运算,x1、x2是输入,w1、w2是权重

实现:

即:

输出的结果显示y是个张量,只搭建了承载计算过程的计算图,并没有运算。如果想得到运算结果,就要用到会话了

import tensorflow as tf
x = tf.constant([[1.0, 2.0]])  #1行2列的张量
w = tf.constant([[3.0], [4.0]])  #2行1列的张量
y = tf.matmul(x,w)
y

4、会话

     会话(session):执行计算图中的节点运算

用with结构实现:

                              with tf.Session() as sess:

                                          print sess.run(y)

import tensorflow as tf
x = tf.constant([[1.0, 2.0]])  #1行2列的张量
w = tf.constant([[3.0], [4.0]])  #2行1列的张量
y = tf.matmul(x,w)
y
with tf.Session() as sess:
    print(sess.run(y))

5、神经网络的参数是指神经元线上的权重W,用变量表示,一般会先随机生成这些参数

随机种子如果去掉,每次生成的随机数将不一致。

标准差、均值、随机种子如果没有特殊要求,是可以不写的

tf.random_normal也可以用生成常量的函数来替换

6、神经网络的实现过程

     ①准备数据集,提取特征,作为输入喂给神经网络(Neural Network,NN)

     ②搭建神经网络结构,从输入到输出(先搭建计算图,再用会话执行)

       (NN前向传播算法——>计算输出)

     ③大量特征喂给神经网络,得到大量输出,将每一次输出与标准答案的差反向传回神经网络,调整神经网络的参数,直到模型达到要求,即迭代优化神经网络参数

       (NN反向传播算法——>优化参数训练模型)

     ④使用训练好的模型预测和分类(将新数据送入前向传播网络便可以实现预测和分类了)

①②③是训练过程,④是使用过程

7、前向传播

用tensorflow描述

8、代码实现实例①

#两层简单神经网络(全连接)

import tensorflow as tf

#定义输入和参数
x = tf.constant([[0.7, 0.5]])  #一组体积和重量,用一行两列的二维张量表示
w1 = tf.Variable(tf.random_normal([2,3],stddev=1,seed=1))
w2 = tf.Variable(tf.random_normal([3,1],stddev=1,seed=1))

#定义前向传播过程
a = tf.matmul(x,w1)
y = tf.matmul(a,w2)
#到这神经网络的架构就构建好了


#用会话计算结果
with tf.Session() as sess:
    init_op = tf.global_variables_initializer()
    sess.run(init_op)
    print(sess.run(y))

代码实现实例②

#两层简单神经网络(全连接)

import tensorflow as tf
#定义输入和参数
#用placeholder实现输入定义   (sess.run中喂一组数据)
x = tf.placeholder(tf.float32,shape=(1,2))  #一组体积和重量,用一行两列的二维张量表示
w1 = tf.Variable(tf.random_normal([2,3],stddev=1,seed=1))
w2 = tf.Variable(tf.random_normal([3,1],stddev=1,seed=1))

#定义前向传播过程
a = tf.matmul(x,w1)
y = tf.matmul(a,w2)
#到这神经网络的架构就构建好了

#用会话计算结果
with tf.Session() as sess:
    init_op = tf.global_variables_initializer()
    sess.run(init_op)
    print(sess.run(y,feed_dict={x:[[0.7,0.5]]}))
    

代码实现实例③

#两层简单神经网络(全连接)
import tensorflow as tf

#定义输入和参数
#用placeholder实现输入定义   (sess.run中喂多组数据)
x = tf.placeholder(tf.float32,shape=(None,2))  #注意None
w1 = tf.Variable(tf.random_normal([2,3],stddev=1,seed=1))
w2 = tf.Variable(tf.random_normal([3,1],stddev=1,seed=1))

#定义前向传播过程
a = tf.matmul(x,w1)
y = tf.matmul(a,w2)
#到这神经网络的架构就构建好了

#用会话计算结果
with tf.Session() as sess:
    init_op = tf.global_variables_initializer()
    sess.run(init_op)
    print(sess.run(y,feed_dict={x:[[0.7,0.5],[0.2,0.3],[0.3,0.4],[0.4,0.5]]}))
    print(sess.run(w1))
    print(sess.run(w2))

猜你喜欢

转载自blog.csdn.net/hxxjxw/article/details/89735398