题目:随机产生32组生产出的零件的体积和重量,训练3000轮,每500轮输出一次损失函数。下面我们通过源代码进一步理解神经网络的实现过程:
1.导入模块,生成模拟数据集
2.定义神经网络的输入、参数和输出,定义前向传播过程
3.定义损失函数及方反向传播方法
4.生成会话,训练STEPS轮
代码如下:
import tensorflow as tf
import os
import numpy as np
batch_size = 8
seed = 30000
a = np.random.RandomState(seed)
X = a.rand(32, 2)
Y = [[int(x0 + x1 < 1)] for (x0, x1) in X]
print("x:\n", X)
print("Y:\n", Y)
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))
b = tf.matmul(x, w1)
y = tf.matmul(b, w2)
loss = tf.reduce_mean(tf.square(y-y_))
train_step = tf.train.GradientDescentOptimizer(0.001).minimize(loss)
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:
total_loss = sess.run(loss, feed_dict={x: X, y_: Y})
print("After %d training steps,loss on all data is %g" % (i, total_loss))
close()