创建神经网络模型

1、构建神经网络结构,并进行模型训练

  1. import tensorflow as tf
    import numpy as np
    import matplotlib.pyplot as plt #python的结果可视化模块
  2.  
  3. """定义一个添加神经层的函数
    inputs:输入数据
    in_size:输入神经元的个数
    out_size:输出神经元的个数
    activation_function:激活函数
    """
    def add_layer(inputs, in_size, out_size, n_layer, activation_function=None):
    layer_name = 'layer%s' % n_layer
    with tf.name_scope(layer_name):
    with tf.name_scope("wights"):
    Weights = tf.Variable(tf.random_normal([in_size, out_size]), name='W') #定义权重矩阵
    #tf.summary.histogram用于保存变量的变化
    tf.summary.histogram(layer_name+'/weights', Weights)
    with tf.name_scope("biases"):
    biases = tf.Variable(tf.zeros([1, out_size]) + 0.1, name='b')#定义偏置
    tf.summary.histogram(layer_name + '/biases', biases)
    with tf.name_scope("Wx_plus_b"):
    Wx_plus_b = tf.matmul(inputs, Weights) + biases #预测出的值
    if activation_function is None:
    outputs = Wx_plus_b #线性激活
    else:
    outputs = activation_function(Wx_plus_b) #非线性激活
    tf.summary.histogram(layer_name + '/outputs', outputs)
    return outputs
  4.  
  5. """创建数据"""
    #定义输入,linspace产生等差数列,加上数据的维度,定义输入数据为300个例子
    x_data = np.linspace(-1, 1, 300)[:, np.newaxis]
    # print(x_data.shape)
    noise = np.random.normal(0, 0.05, x_data.shape) #定义噪声点
    y_data = np.square(x_data) - 0.5 + noise # y=x_data*x_data - 0.5
  6.  
  7. """定义网络
    输入层:1个神经元(使用输入的一个元素)
    隐藏层:定义10个神经元
    输出层:1个神经元(1个输入对应一个输出)
    """
    #定义命名空间,使用tensorboard进行可视化
    with tf.name_scope("inputs"):
    xs = tf.placeholder(tf.float32, [None, 1], name="x_input") #模型的输入x值
    ys = tf.placeholder(tf.float32, [None, 1], name="y_input") #模型的输入y值
  8.  
  9. #隐藏层
    l1 = add_layer(xs, 1, 10, n_layer=1, activation_function=tf.nn.relu)
    #输出层
    prediction = add_layer(l1, 10, 1, n_layer=2, activation_function=None)
  10.  
  11. #损失函数
    with tf.name_scope("loss"):
    loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys-prediction),
    reduction_indices=[1]))
    tf.summary.scalar('loss', loss) #用于观察常量的变化
    #模型训练
    with tf.name_scope("train"):
    train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)
  12.  
  13. init = tf.global_variables_initializer() #初始化所有变量
    with tf.Session() as sess:
    merged = tf.summary.merge_all()
    writer = tf.summary.FileWriter("logs/", sess.graph) #保存神经网络的所有的信息,方便浏览器访问
    sess.run(init)
  14.  
  15. for i in range(1001):
    sess.run(train_step, feed_dict={xs: x_data, ys: y_data})
    if i % 50 == 0:#每训练50次,合并一下结果
    result = sess.run(merged, feed_dict={xs: x_data, ys: y_data})
    writer.add_summary(result, i)
    """
    fig = plt.figure() #定义一个图片框
    ax = fig.add_subplot(1, 1, 1)
    ax.scatter(x_data, y_data) #输出样本值
    plt.ion() #防止plt后程序暂停
    plt.show() #一次输出,将程序暂停
  16.  
  17. for i in range(1001):
    sess.run(train_step, feed_dict={xs:x_data,ys:y_data})
    if i % 50 == 0:
    # print(i, sess.run(loss, feed_dict={xs:x_data,ys:y_data}))
    try:
    ax.lines.remove(lines[0]) # 去除lines的第一个线条
    except Exception:
    pass
    prediction_value = sess.run(prediction, feed_dict={xs:x_data})
    lines = ax.plot(x_data, prediction_value, 'r-', lw=5) #将预测的值plot上去
    plt.gca()
    plt.pause(0.1) #每0.1秒输出一次
    """

2、可视化模型的参数变化等操作

  使用tensorboard进行可视化

    1、将需要可视化的操作保存在‘logs’文件夹下

    2、cmd进入logs文件夹所在的父文件路径

    3、tensorboard --logdir=logs

    4、在浏览器中访问3中命令返回的ip地址

  结果展示如下:

    

    

    

    

3、问题解决

  开始训练完模型后无法显示graph。解决方法:必须在lcmd中进入'logs'文件夹的父路径中,在键入tensorboard命令,尽量使用Chrom浏览器,其他的浏览器可能会遇到不兼容的问题。

Tensorflow搭建神经网络及使用Tensorboard进行可视化的更多相关文章

  1. (转)一文学会用 Tensorflow 搭建神经网络

    一文学会用 Tensorflow 搭建神经网络 本文转自:http://www.jianshu.com/p/e112012a4b2d 字数2259 阅读3168 评论8 喜欢11 cs224d-Day ...

  2. 用Tensorflow搭建神经网络的一般步骤

    用Tensorflow搭建神经网络的一般步骤如下: ① 导入模块 ② 创建模型变量和占位符 ③ 建立模型 ④ 定义loss函数 ⑤ 定义优化器(optimizer), 使 loss 达到最小 ⑥ 引入 ...

  3. 一文学会用 Tensorflow 搭建神经网络

    http://www.jianshu.com/p/e112012a4b2d 本文是学习这个视频课程系列的笔记,课程链接是 youtube 上的,讲的很好,浅显易懂,入门首选, 而且在github有代码 ...

  4. Tensorflow 搭建神经网络及tensorboard可视化

    1. session对话控制 matrix1 = tf.constant([[3,3]]) matrix2 = tf.constant([[2],[2]]) product = tf.matmul(m ...

  5. kaggle赛题Digit Recognizer:利用TensorFlow搭建神经网络(附上K邻近算法模型预测)

    一.前言 kaggle上有传统的手写数字识别mnist的赛题,通过分类算法,将图片数据进行识别.mnist数据集里面,包含了42000张手写数字0到9的图片,每张图片为28*28=784的像素,所以整 ...

  6. TensorFlow实战第四课(tensorboard数据可视化)

    tensorboard可视化工具 tensorboard是tensorflow的可视化工具,通过这个工具我们可以很清楚的看到整个神经网络的结构及框架. 通过之前展示的代码,我们进行修改从而展示其神经网 ...

  7. tensorflow搭建神经网络

    最简单的神经网络 import tensorflow as tf import numpy as np import matplotlib.pyplot as plt date = np.linspa ...

  8. tensorflow搭建神经网络基本流程

    定义添加神经层的函数 1.训练的数据2.定义节点准备接收数据3.定义神经层:隐藏层和预测层4.定义 loss 表达式5.选择 optimizer 使 loss 达到最小 然后对所有变量进行初始化,通过 ...

  9. 用TensorFlow搭建一个万能的神经网络框架(持续更新)

    我一直觉得TensorFlow的深度神经网络代码非常困难且繁琐,对TensorFlow搭建模型也十分困惑,所以我近期阅读了大量的神经网络代码,终于找到了搭建神经网络的规律,各位要是觉得我的文章对你有帮 ...

随机推荐

  1. kubectl工具的windows安装方法

    1.首先安装Chocolatey 参考:https://chocolatey.org/install#install-with-powershellexe windows7+以上操作系统的cmd sh ...

  2. Intellij IDEA工具的常用快捷键

    掌握如下常用快捷键可以使自己的开发效率提供十倍. ctrl + B : 转到类或者方法的定义 ctrl + Alt + B:弹出接口/虚类的实现类/子类 ctrl + Alt + 左箭头/右箭头 : ...

  3. jquery.fileDownload plugin: Success msg alert before actual pdf download completed

    Currently , I use jquery fileDownload plugin to download multiple pdf that in a list page, which eve ...

  4. LINUX的LAMP环境搭配

    在ubuntu linux下以编译方式安装LAMP(apache mysql php)环境 最近转向到了使用ubuntu做 桌面,安装好系统以来一直都没配置lamp开发环境.由于很久以来没有自己编译安 ...

  5. velocity 遍历EventHandler Iterator

    EventHandlerUtil 类的 iterateOverEventHandlers方法 for (Iterator i = handlerIterator; i.hasNext();){ Eve ...

  6. CentOS 7.4系统优化/安装软件

    源改为国内源 阿里云yum源 https://opsx.alibaba.com/mirror 清华yum源 https://mirrors.tuna.tsinghua.edu.cn/ 网易163yum ...

  7. Python3.6全栈开发实例[006]

    6.检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者. dic = {"k1": "v1v1", " ...

  8. RemoveDuplicatesfromSortedArray

    Given a sorted array, remove the duplicates in place such that each element appear only once and ret ...

  9. linux c编程:System V消息队列一

    消息队列可以认为是一个消息链表,System V 消息队列使用消息队列标识符标识.具有足 够特权的任何进程都可以往一个队列放置一个消息,具有足够特权的任何进程都可以从一个给定队列读出一个消息.在某个进 ...

  10. Ubuntu 14.04上安装WineTMQQ2013麒麟版

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/tao_627/article/details/24187699 我先后试用了longterm团队的2 ...