基于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循环神经网络了。

posted @ 2018-07-02 17:52  lvsling  阅读(1521)  评论(0编辑  收藏  举报