参数:权重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)