TensorFlow学习笔记(九)tf搭建神经网络基本流程

来源:互联网 发布:游戏优化软件排行榜 编辑:程序博客网 时间:2024/05/29 23:46

1. 搭建神经网络基本流程

定义添加神经层的函数

1.训练的数据
2.定义节点准备接收数据
3.定义神经层:隐藏层和预测层
4.定义 loss 表达式
5.选择 optimizer 使 loss 达到最小

然后对所有变量进行初始化,通过 sess.run optimizer,迭代 1000 次进行学习:

import tensorflow as tfimport numpy as np# 添加层def add_layer(inputs, in_size, out_size, activation_function=None):    # add one more layer and return the output of this layer    Weights = tf.Variable(tf.random_normal([in_size, out_size]))    biases = tf.Variable(tf.zeros([1, out_size]) + 0.1)    Wx_plus_b = tf.matmul(inputs, Weights) + biases    if activation_function is None:        outputs = Wx_plus_b    else:        outputs = activation_function(Wx_plus_b)    return outputs# 1.训练的数据# Make up some real data x_data = np.linspace(-1,1,300)[:, np.newaxis]noise = np.random.normal(0, 0.05, x_data.shape)y_data = np.square(x_data) - 0.5 + noise# 2.定义节点准备接收数据# define placeholder for inputs to network  xs = tf.placeholder(tf.float32, [None, 1])ys = tf.placeholder(tf.float32, [None, 1])# 3.定义神经层:隐藏层和预测层# add hidden layer 输入值是 xs,在隐藏层有 10 个神经元   l1 = add_layer(xs, 1, 10, activation_function=tf.nn.relu)# add output layer 输入值是隐藏层 l1,在预测层输出 1 个结果prediction = add_layer(l1, 10, 1, activation_function=None)# 4.定义 loss 表达式# the error between prediciton and real data    loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction),                     reduction_indices=[1]))# 5.选择 optimizer 使 loss 达到最小                   # 这一行定义了用什么方式去减少 loss,学习率是 0.1       train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)# important step 对所有变量进行初始化#init = tf.initialize_all_variables()init = tf.global_variables_initializer()sess = tf.Session()# 上面定义的都没有运算,直到 sess.run 才会开始运算sess.run(init)# 迭代 1000 次学习,sess.run optimizerfor i in range(1000):    # training train_step 和 loss 都是由 placeholder 定义的运算,所以这里要用 feed 传入参数    sess.run(train_step, feed_dict={xs: x_data, ys: y_data})    if i % 50 == 0:        # to see the step improvement        print(sess.run(loss, feed_dict={xs: x_data, ys: y_data}))

2. 主要步骤的解释:

import tensorflow as tfimport numpy as np
  • 导入或者随机定义训练的数据 x 和 y:
x_data = np.random.rand(100).astype(np.float32)y_data = x_data*0.1 + 0.3
  • 先定义出参数 Weights,biases,拟合公式 y,误差公式 loss:
Weights = tf.Variable(tf.random_uniform([1], -1.0, 1.0))biases = tf.Variable(tf.zeros([1]))y = Weights*x_data + biasesloss = tf.reduce_mean(tf.square(y-y_data))
  • 选择 Gradient Descent 这个最基本的 Optimizer:
optimizer = tf.train.GradientDescentOptimizer(0.5)
  • 神经网络的 key idea,就是让 loss 达到最小:
train = optimizer.minimize(loss)
  • 前面是定义,在运行模型前先要初始化所有变量:
init = tf.initialize_all_variables()
  • 接下来把结构激活,sesseion像一个指针指向要处理的地方:
sess = tf.Session()
  • init 就被激活了,不要忘记激活:
sess.run(init)
  • 训练201步:
for step in range(201):
  • 要训练 train,也就是 optimizer:
sess.run(train)
  • 每 20 步打印一下结果,sess.run 指向 Weights,biases 并被输出:
if step % 20 == 0:print(step, sess.run(Weights), sess.run(biases))

所以关键的就是 y,loss,optimizer 是如何定义的。


阅读全文
0 0
原创粉丝点击