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))
人工智能实践:Tensorflow笔记(二):TensorFlow框架
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hxxjxw/article/details/89735398
猜你喜欢
转载自blog.csdn.net/hxxjxw/article/details/89735398
今日推荐
周排行