zoukankan      html  css  js  c++  java
  • 吴裕雄 python 神经网络——TensorFlow 训练过程的可视化 TensorBoard的应用

    #训练过程的可视化 ,TensorBoard的应用
    #导入模块并下载数据集
    import tensorflow as tf
    from tensorflow.examples.tutorials.mnist import input_data
    
    #设置超参数
    max_step=1000
    learning_rate=0.001
    dropout=0.9
    
    # 用logdir明确标明日志文件储存路径
    #训练过程中的数据储存在E:\MNIST_data\目录中,通过这个路径指定--log_dir
    data_dir='E:\MNIST_data\'
    log_dir='E:\mnist_with_summaries\'
    mnist=input_data.read_data_sets(data_dir,one_hot=True)
    sess=tf.InteractiveSession()
    
    #本句的含义是使图可视化,sess.graph是对图的定义
    #使用以上指定的路径创建摘要的文件写入符(FileWrite)
    file_write=tf.summary.FileWriter(log_dir,sess.graph)
    
    def variable_summaries(var, name):
        """对每一个张量添加多个摘要描述"""
        with tf.name_scope('summaries'):
            tf.summary.histogram(name, var)
            mean = tf.reduce_mean(var)
            #均值
            tf.summary.scalar('mean/' + name, mean) 
            stddev = tf.sqrt(tf.reduce_mean(tf.square(var - mean)))
            #标准差
            tf.summary.scalar('stddev/' + name, stddev)  
            # 最大值
            tf.summary.scalar('max',tf.reduce_max(var)) 
            # 最小值
            tf.summary.scalar('min', tf.reduce_min(var)) 
            tf.summary.histogram('histogram', var)
            
    def nn_layer(input_tensor, input_dim, output_dim, layer_name, act=tf.nn.relu):
        with tf.name_scope(layer_name):
            """为确保计算图中各个层的分组,给每一层添加一个name_scope"""
            with tf.name_scope('weights'):
                weights = tf.Variable(tf.truncated_normal([input_dim, output_dim], stddev=0.1))
                variable_summaries(weights, layer_name + '/weights')
            with tf.name_scope('biases'):
                biases = tf.Variable(tf.constant(0.0, shape=[output_dim]))
                variable_summaries(biases, layer_name + '/biases')
            with tf.name_scope('Wx_plus_b'):
                preactivate = tf.matmul(input_tensor, weights) + biases
                # 激活前的直方图
                tf.summary.histogram(layer_name + '/pre_activations', preactivate) 
            activations = act(preactivate, name='activation')
            # 记录神经网络节点输出在经过激活函数之后的分布。
            # 激活后的直方图
            tf.summary.histogram(layer_name + '/activations', activations) 
            return activations
        
    #构建回归模型,输入原始真实值(group truth),采用sotfmax函数拟合,并定义损失函数和优化器
    #定义回归模型
    x = tf.placeholder(tf.float32, [None, 784])
    activations = nn_layer(x,784,10,"x")
    #训练模型
    #使用InteractiveSession()创建交互式上下文tf会话,这里的会话是默认
    #在tf.Tensor.eval 和tf.Operation.run中都可以使用该会话来运行操作(OP)
    sess = tf.InteractiveSession()
    #注意:之前的版本中使用的是 tf.initialize_all_variables 作为初始化全局变量,已被弃用,更新后的采用一下命令
    tf.global_variables_initializer().run()
    
    for _ in range(1000):
        batch_xs, batch_ys = mnist.train.next_batch(100)
        sess.run(activations, feed_dict={x: batch_xs})
        
    #运行tensorboard命令,打开浏览器,查看模型训练过程中的可视化结果,
    #在终端输入下命令:
    #tensorboard --logdir=E:\mnist_with_summaries\

  • 相关阅读:
    mysql数据库基础知识
    js与jquery操作
    4月16日的错题整理
    智还王项目中出现的问题和使用的一些方法
    dom操作
    二维数组的定义与用法
    数组内容
    网页布局时遇到的问题
    css初接触
    表单
  • 原文地址:https://www.cnblogs.com/tszr/p/10832949.html
Copyright © 2011-2022 走看看