Tensorflow机器学习,前向传播过程
简介
——搭建一个简单的神经网络
——前向传播
——方向传播过程
——八股之正则化
首先我们来学习这两个函数
——正态分布:truncated_normal()
——平均分布: random_uniform()
我们来举个例子,例如:tf.Variable(tf.random_normal([2, 3]), stddev=2, mean=0, seed=1))
- random_normal() 指的是正态分布,其填入的值是列表,如给的样例中的[2, 3],表示生成2x3的矩阵
- stddev=x意思是标准差为x(x为任意整数),样例中给的是2
- mean=x 均值为x
- seed=x 随机种子为x ;如果定义了,表示每次生成的结果都一样
Variable中后三者可写可不写,根据特殊要求而定
其中,truncated_normal()函数为正态分布,表示超过特定的差值会重新生成数据
————————————————————————————————
前向传播的过程 :搭建NN结构(Neural Network),指值的输入到运算完值后的输出
————————————————————————————————
举例:?
例如想要通过两个变量 x1 和 x2 输入 NN ,通过NN后输出一个数值。我们拟定 x 是为1x2的矩阵 ,==W |x的节点,a的节点| |层数| ==的格式来输入
给出W(1)为 【 w1.1(1) w1.2(1) w1.3(1) 】 如图输入层到隐藏层
-------------------- 【 w2.1(1) w2.2(1) w2.3(1) 】
a(1)=【a11, a12, a13】 为 1 x 3 的矩阵 = xW(1)
W(2)=【 w1.1(2) 】 是一个3 x 1 的矩阵 如图隐藏层到输出层
--------【 w2.1(2) 】
--------【 w3.1(2) 】
——
用矩阵来表示就是 a = tf.matmul(x, W1)、y = tf.matmul(a, W2)
a = tf.matmul(x, W1)
y = tf.matmul(a, W2)
接下来,我们来喂入数值,有两种喂入的方法,其一种是可以喂入固定组数的数值,另一种是可以喂入多组数值。
先讲喂入固定组数值的方法:?
# coding:utf-8
# 两层简单神经网络(全连接)
import tensorflow as tf
# 定义输入和参数
x = tf.constant([[0.7, 0.5]])
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 is:\n", sess.run(y))
# y is:
# [[3.0904665]]
其上输出的结果:
y is: [[3.0904665]]
其次,我们来讲可以喂入多组数据的方法:?
# 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 is:\n", sess.run(y, feed_dict={x: [[0.7, 0.5]]}))
# y in tf3_4.py is:
# [[3.0904665]]
输出的结果为
y is: [[3.0904665]]
输出的结果都一样表示成功了
其中
placeholder()函数是在神经网络构建graph的时候在模型中的占位
函数模型
tf.placeholder( dtype, shape=None, name=None )