TensorFlow学习笔记(九)tf搭建神经网络基本流程
2017-07-28 14:28
615 查看
1. 搭建神经网络基本流程
定义添加神经层的函数1.训练的数据
2.定义节点准备接收数据
3.定义神经层:隐藏层和预测层
4.定义 loss 表达式
5.选择 optimizer 使 loss 达到最小
然后对所有变量进行初始化,通过 sess.run optimizer,迭代 1000 次进行学习:
import tensorflow as tf import 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 optimizer for 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 tf import 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 + biases loss = 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 是如何定义的。
相关文章推荐
- TensorFlow学习笔记(十)tf搭建神经网络可视化结果
- tensorflow 学习笔记4 搭建神经网络基本流程
- TensorFlow学习笔记(六)--简单神经网络搭建
- 如何用 Tensorflow 搭建神经网络-了解神经网络基本概念
- 神经网络环境搭建,windows上安装theano和keras的流程
- TensorFlow学习笔记(三):深层神经网络
- JSF基本搭建流程
- 【cocos2dx网络游戏】搭建CS架构的基本通信框架(一)server
- tensorflow 神经网络基本使用
- 一文学会用 Tensorflow 搭建神经网络
- 基本神经网络
- Tensorflow搭建神经网络及使用Tensorboard进行可视化
- 神经网络体系搭建(一)——神经网络
- 网络爬虫基本工作流程和抓取策略
- 一文学会用 Tensorflow 搭建神经网络
- 一文学会用 Tensorflow 搭建神经网络
- 莫烦 tensorflow 笔记 (一)搭建神经网络
- 网络应用的Socket API编程的基本调用流程
- 对比学习用 Keras 搭建 CNN RNN 等常用神经网络
- 用Keras搭建, 编译和训练神经网络时,常见问题