前1个月接触tf,是一个老师组了队做互联网+比赛, 深度学习的机器视觉。用tf框架python实现,在学习中,把自己的一些心得体会分享出来。欢迎大家指正。
神经网路搭建八股,正向传播,反向传播,梯度下降减小误差。
训练参数,用来输入两个参数来预测是否合格。
#coding:utf-8
2 #0导入模块,生成模拟数据集
3 import tensorflow as tf
4 import numpy as np
5 BATCH_SIZE = 8
6 seed = 23455
7
8 #基于seed产生随机数
9 rng = np.random.RandomState(seed)
10 #随机数返回32行2列的矩阵 为32组体积和重量 作为输入集
11 X = rng.rand(32,2)
12 #从【32,2】取出一行 判断和小于1给y赋值1 否则为0
13 #为输入集的标签(正确答案)
14 Y = [[int(x0 + x1 < 1)] for (x0,x1) in X]
15 print "X:\n",X
16 print "y:\n",Y
17 #1定义神经网络输入输出,参数,定义前向传播
18 x = tf.placeholder(tf.float32,shape=(None, 2))
19 y1 = tf.placeholder(tf.float32,shape=(None, 1))
20
21 w1= tf.Variable(tf.random_normal([2,3],stddev= 1, seed= 1))
22 w2= tf.Variable(tf.random_normal([3,1],stddev= 1, seed= 1))
23
24 a= tf.matmul(x,w1)
25 y= tf.matmul(a,w2)
26 #2定义损失函数 反向传播
27 loss= tf.reduce_mean(tf.square(y-y1))
28 train_step= tf.train.GradientDescentOptimizer(0.001).minimize(loss)
29 #3生成会话,训练STEPS轮
30 with tf.Session() as sess:
31 init_op= tf.global_variables_initializer()
32 sess.run(init_op)
33 #输出目前(未训练)的参数值
34 print"w1:\n",sess.run(w1)
35 print"w2:\n",sess.run(w2)
36 print"\n"
37 #训练模型
38 STEPS = 3000
39 for i in range(STEPS):
40 start= (i*BATCH_SIZE)%32
41 end= start+ BATCH_SIZE
42 sess.run(train_step,feed_dict={x:X[start:end],y1:Y[start:end]})
43 if i% 500 == 0:
44 total_loss = sess.run(loss,feed_dict={x:X,y1:Y})
45 print("after%d training step(s),loss on all data is %g"%(i,total _loss))
46 #输出训练后的参数值
47 print"\n"
48 print"w1:\n",sess.run(w1)
49 print"w2:\n",sess.run(w2)
50