前向传播:搭建模型,实现推理(以全连接网络为例)
例如:生产一批零件讲体积x1,和重量x2为特征输入NN,通过NN后输入一个数值。
神经网络图
变量初始化,计算图节点运算都要用会话(with结构)实现
with tf.Session() as sess:
sess.run()
变量初始化:在sess.run函数中用tf.global_variables_initializer()
init_op=tf.global_variables_initializer()
sess.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.palceholder(tf.float32,shape=(None,2))
sess.run(y,feed_dict={[[0.1,0.2],[0.2,0.3],[0.3,0.4],[0.4,0.5]]})
例1:
#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))
#此时w1和w2并没有赋值,只是相当于占据了一片空间
#定义向前传播过程
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)
# 这两句表示对w1和w2这种变量进行赋值
print("a is:",sess.run(a))
print("w1 is:",sess.run(w1))
print("y is:",sess.run(y))
例2:
# 两层简单神经网络(全连接)
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:",sess.run(y,feed_dict={x:[[0.7,0.5]]}))
例3:
# 两层简单神经网络(全连接)
import tensorflow as tf
#定义输入和参数
# 用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:
sess.run(tf.global_variables_initializer())
print("y is:",sess.run(y,feed_dict={x:[[0.7,0.5],[0.2,0.3],[0.4,0.5]]}))
# 对x喂入三组数据,会输出三组y值
print("w1 is:",sess.run(w1))
print("w2 is:",sess.run(w2))