目录

1 神经网络实现过程

(1)tf.Variable(tf.random_normal([2, 3], stddev=2, mean=0,seed=1))# 生成正态分布随机数[3, 1]
截屏2020-12-19 下午3.26.57.png(1)

(2)神经网络实现过程

  • 准备数据集,提取特征,作为输入喂给神经网络
  • 搭建NN结构,从输入到输出(先搭建计算图,再用会话执行)
  • 大量特征数据喂给NN,迭代优化NN参数
  • 使用训练好的模型预测和分类

    2 前向传播

    2.1 推导过程

    生产一批零件将体积x1和重量x2为特征输入NN,通过NN后输出一个数值。
    截屏2020-12-19 下午4.11.36.png
    前向传播过程用TensorFlow描述出来。X是输入为1*2的矩阵;用a = tf.matmul(X,W1)实现输入值与权重的乘积得到第一个计算层a1,用y =tf.matmul(a,W2)实现计算层与第二层权重的乘积,得到输出层结果。
    截屏2020-12-19 下午4.14.10.png

    2.2 TensorFlow代码介绍

    (1)变量初始化、计算图节点运算都要用会话(with结构)实现
    1. with tf.Session() as sess:
    2. sess.run()#计算
    (2)变量初始化:在seee.run函数中用tf.global_variables_initiallizer()
    1. init_op = tf.global_variables_initializer()#变量初始化
    2. sess.run(init_op)#计算
    (3)计算图节点运算:在sess.run函数中写入待运算的节点sess.run(y)
    (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]]})

  1. <a name="3QD9t"></a>
  2. ## 2.3 前向传播代码实现
  3. (1)两层简单神经网络(全连接),直接定义输入
  4. ```python
  5. #coding:utf-8
  6. #两层简单神经网络(全连接)
  7. import tensorflow as tf
  8. #表示生成正态分布随机数,形状两行三列,标准差是 2,均值是 0,随机种子是 1。
  9. x = tf.constant([[0.7, 0.5]])#定义一个张量等于[1.0,2.0]
  10. w1= tf.Variable(tf.random_normal([2, 3], stddev=1, seed=1))# 生成正态分布随机数[2, 3]
  11. w2= tf.Variable(tf.random_normal([3, 1], stddev=1, seed=1))# 生成正态分布随机数[3, 1]
  12. #定义前向传播过程
  13. a = tf.matmul(x, w1)#点积
  14. y = tf.matmul(a, w2)#点积
  15. #用会话计算结果
  16. with tf.Session() as sess:
  17. init_op = tf.global_variables_initializer()#变量初始化
  18. sess.run(init_op)#计算
  19. print"y in tf3_3.py is:\n",sess.run(y) #打印计算结果
  20. '''
  21. y in tf3_3.py is :
  22. [[3.0904665]]
  23. '''
  24. # √神经网络的实现过程:
  25. # 1、准备数据集,提取特征,作为输入喂给神经网络(Neural Network,NN)
  26. # 2、搭建 NN 结构,从输入到输出(先搭建计算图,再用会话执行)
  27. # ( NN 前向传播算法 计算输出)
  28. # 3、大量特征数据喂给 NN,迭代优化 NN 参数
  29. # ( NN 反向传播算法 优化参数训练模型)
  30. # 4、使用训练好的模型预测和分类

(2)两层简单神经网络(全连接)用placeholder实现输入定义。喂入一组特征。

  1. #coding:utf-8
  2. #两层简单神经网络(全连接)
  3. import tensorflow as tf
  4. #定义输入和参数
  5. #用placeholder实现输入定义 (sess.run中喂一组数据)
  6. x = tf.placeholder(tf.float32, shape=(1, 2))
  7. w1= tf.Variable(tf.random_normal([2, 3], stddev=1, seed=1))
  8. w2= tf.Variable(tf.random_normal([3, 1], stddev=1, seed=1))
  9. #定义前向传播过程
  10. a = tf.matmul(x, w1)
  11. y = tf.matmul(a, w2)
  12. #用会话计算结果
  13. with tf.Session() as sess:
  14. init_op = tf.global_variables_initializer()
  15. sess.run(init_op)
  16. print"y in tf3_4.py is:\n",sess.run(y, feed_dict={x: [[0.7,0.5]]})
  17. '''
  18. y in tf3_4.py is:
  19. [[3.0904665]]
  20. '''

(3)两层简单神经网络(全连接)用placeholder实现输入定义。喂入N组特征

  1. #coding:utf-8
  2. #两层简单神经网络(全连接)
  3. import tensorflow as tf
  4. #定义输入和参数
  5. #用placeholder定义输入(sess.run喂多组数据)
  6. x = tf.placeholder(tf.float32, shape=(None, 2))#None表示不知输入的特征数量
  7. w1= tf.Variable(tf.random_normal([2, 3], stddev=1, seed=1))
  8. w2= tf.Variable(tf.random_normal([3, 1], stddev=1, seed=1))
  9. #定义前向传播过程
  10. a = tf.matmul(x, w1)
  11. y = tf.matmul(a, w2)
  12. #调用会话计算结果
  13. with tf.Session() as sess:
  14. init_op = tf.global_variables_initializer()
  15. sess.run(init_op)
  16. 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]]})
  17. print "w1:\n", sess.run(w1)
  18. print "w2:\n", sess.run(w2)
  19. '''
  20. the result of tf3_5.py is:
  21. [[ 3.0904665 ]
  22. [ 1.2236414 ]
  23. [ 1.72707319]
  24. [ 2.23050475]]
  25. w1:
  26. [[-0.81131822 1.48459876 0.06532937]
  27. [-2.4427042 0.0992484 0.59122431]]
  28. w2:
  29. [[-0.81131822]
  30. [ 1.48459876]
  31. [ 0.06532937]]
  32. '''