作者:小哥 | 来源:互联网 | 2023-09-17 17:21
学习目标:通过例子,搭建神经网络的八股一、流程1.导入模块,生成模拟数据集;import常量定义生成数据集2.前向传播:定义输入、参数和输出(搭建模型)xy_w1w2ay3.反向传
学习目标:通过例子,搭建神经网络的八股
一、流程
1. 导入模块,生成模拟数据集;
import
常量定义
生成数据集
2. 前向传播: 定义输入、参数和输出(搭建模型)
x y_
w1 w2
a y
3. 反向传播:定义损失函数、反向传播方法(用于训练模型参数)
loss=
train_step=
4. 生成会话,训练 STEPS 轮
二、例程
例:随机产生 32 组生产出的零件的体积和重量,训练 3000 轮,每 500 轮输出一次损失函数。
源码:
1 #coding :utf-8
2
3 #--1--
4 import tensorflow as tf
5 import numpy as np
6
7 BATCH_SIZE=8
8 seed=23455
9
10 rng=np.random.RandomState(seed)
11 X=rng.rand(32,2) #生成32行2列的列表(矩阵)
12
13 Y=[[int(x0+x1<1)]for (x0,x1) in X] #对于X中的每一个(x0,x1),判断x0+x1<1成立,Y为1,否则为0,Y为32行2列的2唯张量
14 print "X:\n",X
15 print "Y:\n",Y
16
17 #--2--相当于提前定义,声明变量, 前向传播,搭建计算模型
18 x=tf.placeholder(tf.float32,shape=(None,2))
19 y_=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
27 #--3--反向传播 定义损失函数和优化方法
28 loss=tf.reduce_mean(tf.square(y-y_))
29 train_step=tf.train.GradientDescentOptimizer(0.001).minimize(loss)
30
31 #--4--
32 with tf.Session() as sees:
33 init_op=tf.initialize_all_variables()
34 sees.run(init_op)
35 print "w1\n",sees.run(w1)#打印初始的w1和w2
36 print "w2\n",sees.run(w2)
37
38 STEPS=3000#迭代执行3000次,训练
39 for i in range(STEPS):
40 start=(i*BATCH_SIZE)%32 #每一次取8组喂给NN,进行优化训练
41 end=start+BATCH_SIZE
42 sees.run(train_step,feed_dict={x:X[start:end],y_:Y[start:end]})
43 if i%500==0:
44 total_loss=sees.run(loss,feed_dict={x:X,y_:Y}) #打印损失函数的结果
45
46 #-----print------
47 print "\n"
48 print "w1:\n",sees.run(w1)
49 print "w2:\n",sees.run(w2)
结果:
1)# source activate tensorflow 进入tensorflow环境
2)执行# python NN_1.py