- 1 神经网络实现过程
- 2 前向传播
- 2.1 推导过程
- 2.2 TensorFlow代码介绍
- 2.3 前向传播代码实现
- 相关笔记
(1)tf.Variable(tf.random_normal([2, 3], stddev=2, mean=0,seed=1))# 生成正态分布随机数[3, 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)实现计算层与第二层权重的乘积,得到输出层结果。
(1)变量初始化、计算图节点运算都要用会话(with结构)实现
with tf.Session() as sess:
sess.run()#计算
(2)变量初始化:在seee.run函数中用tf.global_variables_initiallizer()
init_op = tf.global_variables_initializer()#变量初始化
sess.run(init_op)#计算
(3)计算图节点运算:在sess.run函数中写入待运算的节点sess.run(y) (4)用tf.placeholder占位,在sess.run韩式中用feed_dict喂数据 喂一组数据:
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]]})
2.3 前向传播代码实现
(1)两层简单神经网络(全连接),直接定义输入
#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]]
'''
相关笔记
以下所有源码以及更详细PDF笔记请在github下载 TensorFolwNotebook-from-Peking-University
- 【北京大学】1 TensorFlow1.x中Python基础知识
- 【北京大学】2 TensorFlow1.x的张量、计算图、会话
- 【北京大学】3 TensorFlow1.x的前向传播推导与实现
- 【北京大学】4 TensorFlow1.x的反向传播推导与实现
- 【北京大学】5 TensorFlow1.x的损失函数和交叉熵举例讲解及实现
- 【北京大学】6 TensorFlow1.x的学习率、滑动平均和正则化实例及实现
- 【北京大学】7 TensorFlow1.x的神经网络模块设计思想举例及实现
- 【北京大学】8 TensorFlow1.x的Mnist数据集实例实现
- 【北京大学】9 TensorFlow1.x的实现自定义Mnist数据集
- 【北京大学】10 TensorFlow1.x的卷积神经网络(CNN)相关基础知识
- 【北京大学】11 TensorFlow1.x的卷积神经网络模型Lenet5实现
- 【北京大学】12 TensorFlow1.x的卷积神经网络模型VGGNet实现
- 【北京大学】13 TensorFlow1.x的项目实战之手写英文体识别OCR技术
- 【北京大学】14 TensorFlow1.x的二值神经网络实现MNIST数据集手写数字识别
- 【北京大学】15 TensorFlow1.x的项目实战之人脸表情识别
- 【北京大学】16 TensorFlow1.x的项目实战之图像风格融合与快速迁移