https://www.bilibili.com/video/av22530538/?p=14
#前向传播
#参数:即xn ---wn --->y --->线上的权重W,用变量表示,随机给初值。
#w=tf.Variable(tf.random_normal([2,3],stddev=2,mean=0,seed=1))
# 正态分布 产生2*3矩阵 标准差喂2 均值喂0 随机种子
# tf.truncated_normal() tf.random_uniform()
# 去掉过大偏离点的正态分布 平均分布
#tf.zeros全0数组 tf.zeros([3,2],int32) 生成[[0,0],[0,0],[0,0]]
#tf.ones 全1数组 tf.ones([3,2],int32)生成[[1,1],[1,1],[1,1]]
#tf.fill全定值数组 tf.fill([3,2],6)生成[[6,6].[6,6],[6,6]]
#tf.constant直接给值 tf.constant([3,2,1])生成[3,2,1]
#神经网络实现过程:
#1、准备数据集,提取特征,作为输入喂给神经网络(NN)
#2、搭建NN结构,从输入到输出(先搭建计算图,再用会话执行)
#(NN前向传播算法===》计算输出)
#3、大量特征数据喂给NN,迭代优化NN参数
#(NN反向传播算法---》优化参数训练模型)
#4、使用训练好的模型预测和分类
#前向传播 ==>搭建模型,实现推理(以全联接网络为列)
#eg:产生一批零件将体积x1,和体重x2为特征输入NN,通过NN后输出一个数值。
#推导:
#1、X是输入为1*2矩阵:W前节点编号,后节点编号(层数)为待优化的参数
#W1为2*3矩阵
#a1为1*3矩阵 = XW1
#w2为3*1矩阵 = a1*w2
#a=tf.matmul(X,W1)
#b = tf.matmul(a,W2)
#变量初始化,计算图节点运算都要用会话with结构)实现
#with tf.Session() as sess:
# sess.run()
#变量初始化:在sess.run函数中要用tf.global_variables_initializer()
#init_op = tf.global_varigales_initalizer()
# sese.run(init_op)
#计算图节点运算:在sess.run函数中写入待运算的节点
#sess.run(y)
#用tf.placeholder占位,在sess.run函数中用feed_dict喂数据
#喂一组数据:
#x=tf.placeholder(tf.float32,shape=(1,2))
#sess.run(y,feed_dict={x:[[0.5,0.6]]})
#喂多组数据:
#x=tf.placeholder(tf.float32,shape=(None,2))
#sess.run(y,feed_dict={x:[[0.5,0.6],[0.2,0.3],[0.4,0.5],[0.1,0.2]]})
#实践代码,感受NN前向传播过程
#两层简单神经网络(全连接)
import tensorflow as tf
#定义输入和参数
#1定义神经网络的输入,参数和输出,定义前向传播过程。
#x = tf.constant([[0.7,0.5]])
#用placeholder实现输入定义,(sess.run中喂一组数据)
x=tf.placeholder(tf.float32,shape=(None,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:\n",sess.run(y))
#print(sess.run(y, feed_dict={x: [[0.7, 0.5]]}))
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))
[[3.0904665]
[1.2236414]
[1.7270732]
[2.2305048]]
[[-0.8113182 1.4845988 0.06532937]
[-2.4427042 0.0992484 0.5912243 ]]
[[-0.8113182 ]
[ 1.4845988 ]
[ 0.06532937]]