赞
踩
python :运行 Python 解释器
ESC +:+q!+回车:不保存更改退出 vim vim
python b.py :运行文件
神经网络的搭建课分四步完成:准备工作、 神经网络的搭建课分四步完成:准备工作、 前向传播、反和循环迭代 。
神经网络原理见:https://blog.csdn.net/pumpkin_love/article/details/79892874
随机产生 32 组生产出的零件体积和重量,训练 3000 轮,每 500 轮输出一次损 失函数。下面我们 通过源代码进一步理解神经网络的实现程 :
- #coding:utf-8
- #0导入模块,生成模拟数据集。
- import tensorflow as tf
- import numpy as np
- BATCH_SIZE=8
- seed=23455
-
- #基于seed产生随机数
- rng=np.random.RandomState(seed)
- #随机数返回32行2列的矩阵,表示32组体积和质量,作为输入数据集
- X=rng.rand(32,2)
- #从X这个32行2列的矩阵中取出一行,判断如果和小于1,给Y赋值1;如果和不小于1,给Y赋值0
- #作为输入数据集的标签(正确答案)
- Y=[[int(x0+x1<1)] for (x0,x1) in X]
- print "X:\n",X
- print"Y:\n",Y
-
- #1定义神经网络的输入,参数和输出,定义前向传播过程
- x=tf.placeholder(tf.float32,shape=(None,2))
- y_=tf.placeholder(tf.float32,shape=(None,1))
-
- 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)
-
- #2定义损失函数及反向传播方法
- loss=tf.reduce_mean(tf.square(y-y_))
- train_step=tf.train.GradientDescentOptimizer(0.001).minimize(loss)
- #train_step=tf.train.MomentumOptimzer(0.001,0.9).minimize(loss)
- #train_step=tf.train.AdamOptimizer(0.001).minimize(loss)
-
- #3生成会话,训练STEPS轮
- with tf.Session() as sess:
- init_op=tf.global_variables_initializer()
- sess.run(init_op)
- #输出未经训练的参数取值
- print"w1:\n",sess.run(w1)
- print"w2:\n",sess.run(w2)
- print"\n"
-
- #训练模型
- STEPS=3000
- for i in range(STEPS)
- start=(i*BATCH_SIZE)%32
- end=start+BATCH_SIZE
- sess.run(train_step,feed_dict={x: X[start:end],y_: Y[start:end]})
- if i % 500==0:
- total_loss=sess.run(loss,feed_dict={x: X,y_: Y})
- print("After %d training step(s),loss on all data is %g" % (i,total_loss))
-
- #输出训练后的参数取值
- print"\n"
- print"w1:\n",sess.run(w1)
- print"w2:\n",sess.run(w2)
-

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。