3.2 向前传播

参数:权重W,用变量表示,随机给初值。

w=tf.Variable(tf.random_normal([2,3],stddev=2,mean=0,seed=1))
tf.zeros #全0数组
tf.ones #全1数组
tf.fill #全定值数组
tf.constant #直接给值

###实例如下:
tf.zeros([3,2],int32)    #生成 [[0,0],[0,0],[0,0]]
tf.ones([3,2],int32)      #生成[[1,1],[1,1],[1,1]]
tf.fill([3,2],6)          #生成[[6,6],[6,6],[6,6]]
tf.constant([3,2,1])      #生成 [3,2,1]

神经网络实现过程:

1.准备数据集,提取特征,作为输入喂给神经网络(NN)

2.搭建NN结构,从输入到输出(先搭建计算图,在用会话执行)

(NN向前传播算法----->计算输出)

3.大量特征数据喂给NN,迭代优化NN参数

(NN方向传播算法------>优化参数训练模型)

4.使用训练好的模型预测和分类

 

 

  • 变量初始化、计算图节点运算都要用会话(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喂数据
  1 #coding:utf-8
  2 #两层简单神经网络(全连接)
  3 import tensorflow as tf
  4 
  5 #定义输入和参数
  6 x = tf.constant([[0.7,0.5]])
  7 w1 = tf.Variable(tf.random_normal([2,3],stddev=1,seed=1))  #2行3列正态分布随机数,标准差为1
  8 w2 = tf.Variable(tf.random_normal([3,1],stddev=1,seed=1))
  9 
 10 #定义前向传播过程
 11 a = tf.matmul(x,w1)
 12 y = tf.matmul(a,w2)
 13 
 14 #用会话计算结果
 15 with tf.Session() as sess:
 16     init_op = tf.global_variables_initializer()
 17     sess.run(init_op)
 18     print "y in tf3_3.py is:\n",sess.run(y)
 19 
 20 '''
 21 y in tf3_3.py is:
 22 [[3.0904665]]
 23 '''

在敲代码的过程中有两个地方容易出错:

1.  w1 = tf.Variable()中的Variable的首字母要大写,同理w2

2.在会话计算结果中,初始化变量时: init_op = tf.global_variables_initializer()中的variables中的s容易漏掉。

 

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

利用placeholder向sess.run中喂入多组数据,代码如下:

  1 #coding:utf-8
  2 #两层简单神经网络(全连接)
  3 
  4 import tensorflow as tf
  5 
  6 #定义输入和参数
  7 #用placeholder定义输入(sess.run喂多组数据)
  8 x = tf.placeholder(tf.float32,shape=(None,2)) ##因为不确定喂几组数据,将shape的第一个参数设置为None,第二个参数为2代表体积和重量这两个特征参数
  9 w1 = tf.Variable(tf.random_normal([2,3],stddev=1,seed=1))
 10 w2 = tf.Variable(tf.random_normal([3,1],stddev=1,seed=1))
 11 
 12 #定义前向传播过程
 13 a = tf.matmul(x, w1)
 14 y = tf.matmul(a, w2)
 15 
 16 #调用会话计算结果
 17 with tf.Session() as sess:
 18     init_op = tf.global_variables_initializer()
 19     sess.run(init_op)
 20     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]]})
 21     print "w1:\n",sess.run(w1)
 22     print "w2:\n",sess.run(w2)

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值