目录
1 神经网络实现过程
(1)tf.Variable(tf.random_normal([2, 3], stddev=2, mean=0,seed=1))# 生成正态分布随机数[3, 1]
(1)
(2)神经网络实现过程
- 准备数据集,提取特征,作为输入喂给神经网络
- 搭建NN结构,从输入到输出(先搭建计算图,再用会话执行)
- 大量特征数据喂给NN,迭代优化NN参数
- 使用训练好的模型预测和分类
2 前向传播
2.1 推导过程
生产一批零件将体积x1和重量x2为特征输入NN,通过NN后输出一个数值。
前向传播过程用TensorFlow描述出来。X是输入为1*2的矩阵;用a = tf.matmul(X,W1)实现输入值与权重的乘积得到第一个计算层a1,用y =tf.matmul(a,W2)实现计算层与第二层权重的乘积,得到输出层结果。
2.2 TensorFlow代码介绍
(1)变量初始化、计算图节点运算都要用会话(with结构)实现
(2)变量初始化:在seee.run函数中用tf.global_variables_initiallizer()with tf.Session() as sess:sess.run()#计算
(3)计算图节点运算:在sess.run函数中写入待运算的节点sess.run(y)init_op = tf.global_variables_initializer()#变量初始化sess.run(init_op)#计算
(4)用tf.placeholder占位,在sess.run韩式中用feed_dict喂数据 ```python 喂一组数据: x = tf.placeholder(tf.float32,shape=(1,2))# 这里的2表示输入特征的个数 sess.run(y,feed_dict={x:[[0.5,0.6]]})
喂多组数据 x = tf.placeholder(tf.float32,shape=(None,2))# 这里的2表示输入特征的个数 sess.run(y,feed_dict={x:[[0.5,0.6],[0.2,0.3],[0.3,0.4],[0.4,0.5]]})
<a name="3QD9t"></a>## 2.3 前向传播代码实现(1)两层简单神经网络(全连接),直接定义输入```python#coding:utf-8#两层简单神经网络(全连接)import tensorflow as tf#表示生成正态分布随机数,形状两行三列,标准差是 2,均值是 0,随机种子是 1。x = tf.constant([[0.7, 0.5]])#定义一个张量等于[1.0,2.0]w1= tf.Variable(tf.random_normal([2, 3], stddev=1, seed=1))# 生成正态分布随机数[2, 3]w2= tf.Variable(tf.random_normal([3, 1], stddev=1, seed=1))# 生成正态分布随机数[3, 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"y in tf3_3.py is:\n",sess.run(y) #打印计算结果'''y in tf3_3.py is :[[3.0904665]]'''# √神经网络的实现过程:# 1、准备数据集,提取特征,作为输入喂给神经网络(Neural Network,NN)# 2、搭建 NN 结构,从输入到输出(先搭建计算图,再用会话执行)# ( NN 前向传播算法 计算输出)# 3、大量特征数据喂给 NN,迭代优化 NN 参数# ( NN 反向传播算法 优化参数训练模型)# 4、使用训练好的模型预测和分类
(2)两层简单神经网络(全连接)用placeholder实现输入定义。喂入一组特征。
#coding:utf-8#两层简单神经网络(全连接)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"y in tf3_4.py is:\n",sess.run(y, feed_dict={x: [[0.7,0.5]]})'''y in tf3_4.py is:[[3.0904665]]'''
(3)两层简单神经网络(全连接)用placeholder实现输入定义。喂入N组特征
#coding:utf-8#两层简单神经网络(全连接)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 "the result of tf3_5.py is:\n",sess.run(y, feed_dict={x: [[0.7,0.5],[0.2,0.3],[0.3,0.4],[0.4,0.5]]})print "w1:\n", sess.run(w1)print "w2:\n", sess.run(w2)'''the result of tf3_5.py is:[[ 3.0904665 ][ 1.2236414 ][ 1.72707319][ 2.23050475]]w1:[[-0.81131822 1.48459876 0.06532937][-2.4427042 0.0992484 0.59122431]]w2:[[-0.81131822][ 1.48459876][ 0.06532937]]'''
