tensorflow-3day反向传播
推荐大家去慕课网看曹老师的tensorflow笔记课程
1 import numpy#科学计算模块它是一个由多维数组对象和用于处理数组的例程集合组成的库 2 import tensorflow 3 # 4 #x输入y_标准答案 5 #w1w2参数 6 7 #基于seed产生随机数 8 rng=numpy.random.RandomState(8) 9 #随机数返回32行2列的矩阵 表示32组体积和重量作为输入 10 X=rng.rand(32,2) 11 #取出一行如果体积和重量小于1赋值为1否则为0(当做标准答案使用) 12 Y=[[int(x0+x1<1)] for (x0,x1) in X] 13 14 #定义神经网络的输入、参数和输出,定义前向传播过程。 15 x=tensorflow.placeholder(tensorflow.float32,shape=(None,2)) 16 y_=tensorflow.placeholder(tensorflow.float32,shape=(None,1))#标准答案 17 18 #随机生成权重 19 w1=tensorflow.Variable(tensorflow.random_normal([2,3],stddev=1,seed=1)) 20 w2=tensorflow.Variable(tensorflow.random_normal([3,1],stddev=1,seed=1)) 21 22 a=tensorflow.matmul(x,w1) 23 y=tensorflow.matmul(a,w2) 24 25 #定义损失函数和反向传播方法 26 loss=tensorflow.reduce_mean(tensorflow.square(y-y_)) 27 train_step=tensorflow.train.GradientDescentOptimizer(0.001).minimize(loss)#0.001为学习率 优化方法 28 #train_step=tensorflow.train.MomentumOptimizer(0.001,0.9).minimize(loss) 29 #train_step=tensorflow.train.AdamOptimizer(0.001).minimize(loss) 30 31 #生成会话,训练STEPS轮 32 with tensorflow.Session() as sess: 33 init_op=tensorflow.global_variables_initializer() 34 sess.run(init_op) 35 #未训练 36 print("W1\n",sess.run(w1)) 37 print("W2\n", sess.run(w2)) 38 39 #训练模型 40 STEPS=30000 41 for i in range(STEPS): 42 start=(i*8)%32 43 end=start+8 44 sess.run(train_step,feed_dict={x:X[start:end],y_:Y[start:end]}) 45 if i%500==0: 46 total_loss=sess.run(loss,feed_dict={x:X,y_:Y}) 47 print("%d %g"%(i,total_loss)) 48 49 print("w1:",sess.run(w1)) 50 print("w2:", sess.run(w2))