zoukankan      html  css  js  c++  java
  • tensorboard使用(tensorboard 显示No histogram data was found.)

    下面代码为一个简单的线性回归模型,拟合y = 2 * x, 创建的tensorboard文件夹位于当前文件夹下

     1 import os
     2 import io
     3 import time
     4 import numpy as np
     5 import matplotlib.pyplot as plt
     6 import tensorflow as tf
     7 
     8 sess = tf.Session()
     9 # 创建summary_writer,将tensorboard summary写入tensorboard文件夹
    10 summary_writer = tf.summary.FileWriter('tensorboard', tf.get_default_graph())
    11 # 确保summary_writer写入的Tensorflo文件夹存在
    12 if not os.path.exists('tensorboard'):
    13     os.makedirs('tensorboard')
    14 
    15 # 设置模型参数
    16 batch_size = 50
    17 generations = 100
    18 x_data = np.arange(1000) / 10
    19 true_slope = 2.
    20 y_data = x_data * true_slope + np.random.normal(loc=0.0, scale=25, size=1000)
    21 
    22 # 分割数据为训练集和测试集
    23 train_ix = np.random.choice(len(x_data), size=int(len(x_data) * 0.9), replace=False)
    24 # print('train_ix', train_ix.shape)
    25 test_ix = np.setdiff1d(np.arange(1000), train_ix)
    26 x_data_train, y_data_train = x_data[train_ix], y_data[train_ix]
    27 # print('x_data_train', x_data_train.shape)
    28 # print('y_data_train', y_data_train.shape)
    29 x_data_test, y_data_test = x_data[test_ix], y_data[test_ix]
    30 # print('x_data_test', x_data_test.shape)
    31 # print('y_data_test', y_data_test.shape)
    32 # print(y_data_test)
    33 # 创建占位符,变量,模型操作,损失和优化函数
    34 x_graph_input = tf.placeholder(tf.float32, [None])
    35 y_graph_input = tf.placeholder(tf.float32, [None])
    36 m = tf.Variable(tf.random_normal([1], dtype=tf.float32), name='Slope')
    37 output = tf.multiply(m, x_graph_input, name='Batch_Multiplication')
    38 residuals = output - y_graph_input
    39 l2_loss = tf.reduce_mean(tf.abs(residuals), name='L2_Loss')
    40 my_optim = tf.train.GradientDescentOptimizer(0.001)
    41 train_step = my_optim.minimize(l2_loss)
    42 
    43 # 创建tensorboard 操作汇总一个标量值
    44 with tf.name_scope('Slope_Estimate'):
    45     tf.summary.scalar('Slope_Estimate', tf.squeeze(m))
    46 
    47 # 添加tensorboard的另一个汇总数据是直方图汇总
    48 with tf.name_scope('Loss_and_Residuals'):
    49     tf.summary.histogram('Histogram_Error', l2_loss)
    50     tf.summary.histogram('Histogram_Residuals', residuals)
    51 
    52 # 汇总数据
    53 summary_op = tf.summary.merge_all()
    54 init = tf.global_variables_initializer()
    55 sess.run(init)
    56 
    57 # 训练线性回归模型
    58 for i in range(generations):
    59     batch_indices = np.random.choice(len(x_data_train), size=batch_size)
    60     x_batch = x_data_train[batch_indices]
    61     y_batch = y_data_train[batch_indices]
    62     # print(y_batch.shape)
    63     _, train_loss, summary = sess.run([train_step, l2_loss, summary_op],
    64                                       feed_dict={x_graph_input: x_batch, y_graph_input: y_batch})
    65 
    66 
    67     test_loss, test_resids = sess.run([l2_loss, residuals], feed_dict = {x_graph_input: x_data_test, y_graph_input: y_data_test})
    68     if (i + 1) % 10 == 0:
    69         print('generation {} of {}. Train Loss: {:.3}, Test Loss: {:.3}.'.format(i + 1, generations, train_loss, test_loss))
    70     log_writer = tf.summary.FileWriter('tensorboard')
    71     log_writer.add_summary(summary, i)
    72 
    73     # 创建函数输出protobuff格式的图像
    74     def get_linear_plot(slope):
    75         linear_prediction = x_data * slope
    76         plt.plot(x_data, y_data, 'b.', label='data')
    77         plt.plot(x_data, linear_prediction, 'r--', linewidth=3, label='predicted line')
    78         plt.legend(loc='upper left')
    79         buf = io.BytesIO()
    80         plt.savefig(buf, format='png')
    81         buf.seek(0)
    82         return buf
    83 
    84 
    85     slope = sess.run(m)
    86     plot_buf = get_linear_plot(slope[0])
    87     image = tf.image.decode_png(plot_buf.getvalue(), channels=4)
    88     image = tf.expand_dims(image, 0)
    89     image_summary_op = tf.summary.image('Linear_Plot', image)
    90     image_summary = sess.run(image_summary_op)
    91     log_writer.add_summary(image_summary, i)
    92     log_writer.close()

    在当前文件夹下进入cmd模式,输入tensorboard --logdir=tensorboard --host=127.0.0.1

    访问127.0.0.1:6006即可进入tensorboard

    注意:若写为--logdir='tensorboard'会显示不出来

     也可直接在pycharm控制台中输入tensorboard --logdir=tensorboard --host=127.0.0.1

  • 相关阅读:
    ACL2016信息抽取与知识图谱相关论文掠影
    决策树之信息与熵的计算
    从零开始一个http服务器(六)-多路复用和压力测试
    从零开始一个http服务器(三)-返回response 构造
    从零开始一个http服务器(二)-请求request解析
    从零开始一个http服务器(一)-开始
    从零开始一个http服务器(五)-模拟cgi
    从零开始一个http服务器(四)-动态返回
    拼音转汉字
    24点牌 递归算法
  • 原文地址:https://www.cnblogs.com/javaXRG/p/11886986.html
Copyright © 2011-2022 走看看