3.2前向传播

前向传播:搭建模型,实现推理(以全连接网络为例)

例如:生产一批零件讲体积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))
发布了91 篇原创文章 · 获赞 42 · 访问量 22万+

猜你喜欢

转载自blog.csdn.net/cjhxydream/article/details/86752299
今日推荐