基于tensorflow搭建一个神经网络
一,tensorflow的简介
Tensorflow是一个采用数据流图,用于数值计算的 开源软件库。节点在图中表示数字操作,图中的线 则表示在节点间相互联系的多维数据数组,即张量 它灵活的架构让你可以在多种平台上展开计算,例 如台式计算机中的一个或多个CPU(或GPU), 服务器,移动设备等等。Tensorflow最初由Google 大脑小组的研究员和工程师们开发出来,用于机器 学习和深度神经网络方面的研究,但这个系统的通 用性使其也可广泛用于其他计算领域。
二,tensorflow的架构
TensorFlow的系统结构以C API为界,将整个系统分为「前端」和「后端」两个子系统。
前端系统 提供多语言编程环境,提供统一的编程模型支撑用户构造计算图 通过Session的形式,连接TensorFlow后端的「运行时」,启动计算图的执行过程。
后端系统 提供运行时环境,负责执行计算图。
三,tensorflow的简单实现步骤
1,定义一个神经层的函数: 神经层里常见的参数通常有weights、biases和激励函数。
2,导入数据 构建所需的数据。
3,搭建网络 先定义隐藏层,再定义输出层,计算预测值和真实值的误差
4,训练 给定次数,让机器开始学习。
5,结果可视化
代码如下:
import tensorflow as tf import matplotlib.pyplot as plt import numpy as np tf.set_random_seed(1) np.random.seed(1) #构建所需数据 x = np.linspace(-1, 1, 100)[:, np.newaxis] noise = np.random.normal(0, 0.1, size=x.shape) y = np.power(x, 2) + noise #输入x和y tf_x = tf.placeholder(tf.float32, x.shape) tf_y = tf.placeholder(tf.float32, y.shape) # 搭建神经网络 #隐藏层 l1 = tf.layers.dense(tf_x, 10, tf.nn.relu) #输出层 output = tf.layers.dense(l1, 1) loss = tf.losses.mean_squared_error(tf_y, output) optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.5) train_op = optimizer.minimize(loss) sess = tf.Session() sess.run(tf.global_variables_initializer()) plt.ion() #训练 for step in range(100): _, l, pred = sess.run([train_op, loss, output], {tf_x: x, tf_y: y}) if step % 5 == 0: plt.cla() plt.scatter(x, y) plt.plot(x, pred, 'r-', lw=5) plt.text(0.5, 0, 'Loss=%.4f' % l, fontdict={'size': 20, 'color': 'red'}) plt.pause(0.1) plt.ioff() plt.show()
运行结果如图:
四,总结
以上为tensorflow的简单介绍,算是基础入门的案例了。往后学就是分类学习,CNN卷积神经网络,RNN循环神经网络了。