zoukankan      html  css  js  c++  java
  • tensorflow(3)可视化,日志,调试

    可视化

    添加变量
    tf.summary.histogram( "weights1", weights1) # 可视化观看变量
    还有添加图像和音频、

    常量
    tf.summary.scalar('x', x)

    添加embedding

    python

    def checkpoint(sess):
        # Output directory for models and summaries
        timestamp = str(int(time.time()))
        out_dir = os.path.abspath(os.path.join(os.path.curdir, "runs", timestamp))
        print("Writing to {}
    ".format(out_dir))
        # Checkpoint directory. Tensorflow assumes this directory already exists so we need to create it
        checkpoint_dir = os.path.abspath(os.path.join(out_dir, "checkpoints"))
        checkpoint_prefix = os.path.join(checkpoint_dir, "model")
        if not os.path.exists(checkpoint_dir):
            os.makedirs(checkpoint_dir)
        saver = tf.train.Saver(tf.global_variables(), max_to_keep=FLAGS.num_checkpoints)
        saver.save(sess, os.path.join(out_dir, "model.ckpt"), 1)
    

    合并
    merged = tf.summary.merge_all()

    添加视图
    writer=tf.summary.FileWriter('log',sess.graph)

    注意!如果Chrome打不开视图,可以尝试换个浏览器。

    -- CMD下启动 去 127.0.0.1:6006 查看

    tensorboard.exe --logdir=log

    调试

    例如下面这种简陋的方式,将要观察的变量放进去再取出来就行。
    当然有更好的办法例如
    https://www.cnblogs.com/huangshiyu13/p/6721805.html

    code

    summary, _prediction1, _logits1, _prediction_argmax1, _Y_argmax1, _X2, _correct_pred1, _accuracy1, _loss_op1 = 
        sess.run([merged, prediction, logits, prediction_argmax, Y_argmax, X, correct_pred, accuracy, loss_op],
                 feed_dict={X: batch_x, Y: batch_y})
    

    日志

    复杂的变量打印是不够的,记录到本地就好了

    code

    handler = logging.handlers.RotatingFileHandler(LOG_FILE, maxBytes=1024 * 1024*1024, backupCount=5)  # 实例化handler
    #fmt = '%(asctime)s - %(filename)s:%(lineno)s - %(name)s - %(message)s'
    fmt = '%(asctime)s - %(filename)s:%(lineno)s - %(message)s'
    
    formatter = logging.Formatter(fmt)  # 实例化formatter
    handler.setFormatter(formatter)  # 为handler添加formatter
    
    logger = logging.getLogger('tst')  # 获取名为tst的logger
    logger.addHandler(handler)  # 为logger添加handler
    logger.setLevel(logging.DEBUG)
    logger.info('==================================')
    
    def myLog(obj):
    logger.info("obj begin===========================" + str(len(obj)))
    for l1 in obj:
        # print(l1)
        logger.info(l1)
    

    参考
    https://www.cnblogs.com/huangshiyu13/p/6721805.html

  • 相关阅读:
    themes、skins
    使用GreyBox实现Ajax模式窗口
    .net最小化到系统托盘
    asp.net自定义控件
    [转]SQL函数的简短说明
    prototype1.4 和1.5
    [转]Oracle PL/SQL 编程手册(SQL大全)
    更新同一张表中的数据的方法
    js中eval()的作用
    asp.net中的中文和特殊字符的处理方式!
  • 原文地址:https://www.cnblogs.com/facingwaller/p/8150505.html
Copyright © 2011-2022 走看看