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
- TensorFlow学习笔记(九)tf搭建神经网络基本流程
- TensorFlow学习笔记(十)tf搭建神经网络可视化结果
- tensorflow 学习笔记4 搭建神经网络基本流程
- tensorflow学习笔记(九):tf.shape()与tensor.get_shape()
- TensorFlow学习笔记(一):TF基本操作
- Tensorflow深度学习笔记(九)--卷积神经网络(CNN)
- TensorFlow学习笔记6:神经网络搭建(layer,estimator等)
- TensorFlow学习笔记5:神经网络搭建
- TensorFlow学习笔记(十六)tf.random_normal
- tensorflow学习笔记(三十):tf.gradients 与 tf.stop_gradient()
- 莫烦 tensorflow 笔记 (一)搭建神经网络
- TensorFlow学习笔记(九)
- #tensorflow学习笔记#tf.gather
- tensorflow学习笔记--tf.one_hot
- TensorFlow学习(七):基本神经网络相关
- TensorFlow学习笔记(二):实现神经网络
- TensorFlow学习笔记(三):深层神经网络
- TensorFlow学习笔记(5)----TF生成数据的方法
- ios::sync_with_stdio(false) 详细解释
- HDU 6045 Is Derek lying? 水题
- Vuex从入门到入门
- 【小工具】CSDN博客导出工具-Java集成Maven开发
- HDOJ 1705/POJ 2954 叉积+Pick定理
- TensorFlow学习笔记(九)tf搭建神经网络基本流程
- Myeclipse远程调试Tomcat
- JQuery学习笔记(二)
- yum更新及socat安装
- Android数据库(SQLite)框架(5)——LitePal的修改和删除操作
- 如何搭建SSH框架,myeclipse搭建SSH框架详解
- 单例模式的七种写法
- 机器视觉知识第二弹
- axios在vue中的简单配置与使用