目录
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]]
'''