【问题标题】:How to show training and predicted values on Tensorboard using python如何使用 python 在 Tensorboard 上显示训练和预测值
【发布时间】:2019-02-11 11:33:10
【问题描述】:

我尝试过这样的事情:

with tf.Session() as sess: 
    sess.run(tf.global_variables_initializer())

    merged = tf.summary.merge_all()
    writer = tf.summary.FileWriter('logs', sess.graph)
    for iteration in range(int(n_epochs*train_set_size/batch_size)):
        x_batch, y_batch = get_next_batch(batch_size) # fetch the next training batch 

        sess.run(training_op, feed_dict={X: x_batch, y: y_batch}) 

        if iteration % int(1*train_set_size/batch_size) == 0:
            mse_train = loss.eval(feed_dict={X: x_train, y: y_train}) 
            mse_valid = loss.eval(feed_dict={X: x_valid, y: y_valid}) 
            mse_test = loss.eval(feed_dict={X: x_test, y: y_test})
            y_train_pred,summary1,outimage = sess.run([outputs,merged,out_img_sum], feed_dict={X: x_train,y:y_train})
            y_valid_pred,summary2 = sess.run([outputs,merged], feed_dict={X: x_valid,y:y_valid})
            y_test_pred,summary3 = sess.run([outputs,merged], feed_dict={X: x_test,y:y_test})
            writer.add_summary(summary1, iteration*batch_size/train_set_size)

我愿意在张量板上显示y_trainy_train_pred 值。我怎么能这样做?这些就像数组,我没有办法在 Tensorboard 上显示这些值比较。请帮帮我。

【问题讨论】:

    标签: python python-3.x tensorflow tensorboard


    【解决方案1】:

    更新:

    是的,您可以沿 x 轴绘图。你在张量板上得到错误图像的原因是因为int(iteration*float(batch_size)/train_set_size) 总是返回相同的值(根据你的说法是 0.0001804630682330861)。我在下面创建了一个类似的代码,就像你的情况一样(因为我没有你的数据)。而且效果很好。

    import tensorflow as tf
    import numpy as np
    
    summary_writer = tf.summary.FileWriter('/tmp/test')
    
    for iteration in range(5):
        y_train_preds = np.random.rand(10)
        summary = tf.Summary()
        for idx, value in enumerate(y_train_preds):
            summary.value.add(tag='y_train', simple_value=value)
            summary_writer.add_summary(summary, iteration*len(y_train_preds)+idx)
    
    summary_writer.close()
    

    张量板上的输出

    唯一需要注意的是,确保add_summary() 中的全局步长每次都应该增加。

    也许您可以尝试以下方法我已经更新了你的代码,你也可以试试

    with tf.Session() as sess: 
        sess.run(tf.global_variables_initializer())
    
        merged = tf.summary.merge_all()
        writer = tf.summary.FileWriter('logs', sess.graph)
        for iteration in range(int(n_epochs*train_set_size/batch_size)):
            x_batch, y_batch = get_next_batch(batch_size) # fetch the next training batch 
    
            sess.run(training_op, feed_dict={X: x_batch, y: y_batch}) 
    
            if iteration % int(1*train_set_size/batch_size) == 0:
                summary = tf.Summary()
                mse_train = loss.eval(feed_dict={X: x_train, y: y_train}) 
                mse_valid = loss.eval(feed_dict={X: x_valid, y: y_valid}) 
                mse_test = loss.eval(feed_dict={X: x_test, y: y_test})
                y_train_pred,summary1,outimage = sess.run([outputs,merged,out_img_sum], feed_dict={X: x_train,y:y_train})
                y_valid_pred,summary2 = sess.run([outputs,merged], feed_dict={X: x_valid,y:y_valid})
                y_test_pred,summary3 = sess.run([outputs,merged], feed_dict={X: x_test,y:y_test})
                for value in y_train:
                    summary.value.add(tag='y_train', simple_value=value)
                for idx, value in enumerate(y_train_pred):
                    summary.value.add(tag='y_train_pred', simple_value=value)
                    writer.add_summary(summary, iteration*len(y_train_pred)+idx)
                writer.add_summary(summary1, int(iteration*float(batch_size)/train_set_size))
    

    参考帖:tensorboard with numpy array

    【讨论】:

    • 我喜欢这个建议。我会试一试,如果它对我有用,我肯定会接受你的回答,朋友。
    • 对不起,我没有在图表上正确绘制。看图像我只得到一条线而不是曲线或图形。我尝试了 matplotlib,它有所不同:ibb.co/cgvTaK 和 matplotlib 的图像是这样的:ibb.co/eLsc2z 我想看到类似的东西
    • 这可能是(如果您使用的是 python2),因为 (batch_size/train_set_size) 总是返回 0,因为它们是 2 个整数,并且 2 个整数之间的除法总是返回一个整数。要解决它,只需将两个值之一转换为浮点数(例如 float(batch_size)/train_set_size),然后将整个表达式转换为 int (int(iteration*float(batch_size)/train_set_size))。我编辑了答案以反映这些变化
    • @Jaffer Wilson 你能打印出batch_size/train_set_size的值吗?
    • @R.yan 当然,我会告诉你价值观是什么.. Uno 时刻请。
    猜你喜欢
    • 2012-11-21
    • 2017-09-05
    • 2021-02-22
    • 2020-11-29
    • 2018-10-20
    • 1970-01-01
    • 2020-03-16
    • 2021-11-22
    • 2018-03-24
    相关资源
    最近更新 更多