• 【Python深度学习】Python全栈体系(三十一)


    深度学习

    第九章 Tensorboard 可视化

    Tensorboard 工具

    1. 什么是可视化?
    • 可视化是用来查看在 Tensorflow 平台下程序运行的过程,包括:张量/变量,操作,数据流,学习过程等,从而方便 Tensorflow 程序的理解、调试与优化
    • Tensorflow 提供了专门的可视化工具 tensorboard,它将 Tensorflow 执行的数据、模型、过程用图形方式进行显示。Tensorflow 在执行过程中,可以通过某些操作,将模型、数据、graph等信息,保存到磁盘中的 Events 文件中去,从而提供给 Tensorboard 进行可视化
    2. 启动 tensorboard
    • 使用以下命令启动 tensorboard
      • tensorboard --logdir=“PycharmProjects/tensorflow_study/summary/”
    • 其中,logdir参数的值为事件文件存储目录,启动成功后可以看到如下信息,使用提示的URL地址和端口进行访问:
      在这里插入图片描述
    3. tensorboard 主页

    在这里插入图片描述

    4. 为操作添加可视化
    # 将图中的信息存入事件文件,并在tensorboard中显示示例
    import tensorflow as tf
    
    tf.compat.v1.disable_eager_execution()
    
    # 创建一组操作
    a = tf.constant([1, 2, 3, 4, 5])  # 普通张量
    var = tf.Variable(tf.compat.v1.random_normal([2, 3], mean=0.0, stddev=1.0),
                      name="var")  # 变量
    b = tf.constant(3.0, name="a")  # 这里故意将python变量和tf的op名称取的不一致
    c = tf.constant(4.0, name="b")
    d = tf.add(b, c, name="add")
    
    # 显式初始化
    init_op = tf.compat.v1.global_variables_initializer()
    
    with tf.compat.v1.Session() as sess:
        sess.run(init_op)
        # 将当前session的graph信息写入事件文件
        fw = tf.compat.v1.summary.FileWriter("../summary/", graph=sess.graph)
        print(sess.run([a, var, d]))
    
    """
    [array([1, 2, 3, 4, 5]), array([[ 0.3767314 , -1.4588505 ,  0.07674389],
           [ 0.10296078,  1.2612373 , -0.423312  ]], dtype=float32), 7.0]
    """
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    5. 摘要与事件文件操作
    • 如果需要将变量/张量在tensorboard中显示,需要执行以下两步:
      • 收集变量:
        • tf.summary.scalar(name, tensor) # 收集标量,name为名字,tensor为值
        • tf.summary.histogram(name, tensor) # 收集高维度变量参数
        • tf.summary.image(name, tensor) # 收集图片张量
      • 合并变量并写入事件文件:
        • merged = tf.summary.merge_all() # 合并所有变量
        • summary = sess.run(merged) # 运行合并,每次迭代训练都需要运行
        • FileWriter.add_summary(summary, i) # 添加摘要,i表示第几次的值

    第十章 综合案例:实现线性回归

    综合案例:实现线性回归

    • 任务描述:
      • 给定一组输入、输出作为样本
      • 定义线性模型,并进行训练
      • 将训练过程可视化
        在这里插入图片描述
    # 线性回归示例
    import tensorflow as tf
    
    tf.compat.v1.disable_eager_execution()
    # 第一步:创建样本数据
    # 100行1列
    x = tf.compat.v1.random_normal([100, 1], mean=1.75, stddev=0.5, name="x_data")
    y_true = tf.matmul(x, [[2.0]]) + 5.0  # 计算 y = 2x + 5
    
    # 第二步:建立线性模型
    # 初始化权重(随机数)和偏置(固定设置为0),计算wx+b得到预测值
    weight = tf.Variable(tf.compat.v1.random_normal([1, 1], name="w"),
                         trainable=True)  # 训练过程中值是否允许变化
    bias = tf.Variable(0.0, name="b", trainable=True)  # 偏置
    y_predict = tf.matmul(x, weight) + bias  # 计算预测值
    # 第三步:创建损失函数
    loss = tf.reduce_mean(tf.square(y_true - y_predict))  # 均方差损失函数
    # 第四步:使用梯度下降进行训练
    # 0.1 学习率
    train_op = tf.compat.v1.train.GradientDescentOptimizer(0.1).minimize(loss)
    # 收集损失函数的值
    tf.compat.v1.summary.scalar("losses", loss)
    merged = tf.compat.v1.summary.merge_all()  # 合并摘要操作
    
    init_op = tf.compat.v1.global_variables_initializer()
    
    with tf.compat.v1.Session() as sess:
        sess.run(init_op)  # 执行初始化op
    
        # 打印初始权重和偏置
        print("weight: ", weight.eval(), "bias: ", bias.eval())
    
        # 指定事件文件并记录图的信息
        fw = tf.compat.v1.summary.FileWriter("../summary/", graph=sess.graph)
        # 循环训练
        for i in range(500):
            sess.run(train_op)  # 执行训练
            summary = sess.run(merged)  # 执行摘要合并操作
            fw.add_summary(summary, i)  # 写入事件文件
            print(i, ":", " weight: ", weight.eval(), "bias: ", bias.eval())
    """
    weight:  [[0.33808643]] bias:  0.0
    0 :  weight:  [[3.290972]] bias:  1.5962065
    1 :  weight:  [[3.630976]] bias:  1.8313535
    2 :  weight:  [[3.6257746]] bias:  1.8716582
    ...
    497 :  weight:  [[2.0047247]] bias:  4.990969
    498 :  weight:  [[2.0046072]] bias:  4.9910398
    499 :  weight:  [[2.0047135]] bias:  4.991211
    """
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
  • 相关阅读:
    图文加多个测试带你彻底搞懂Netty ChannelPipeline的执行顺序(附源码)
    如何才能在Ubuntu系统部署RabbitMQ服务器并公网访问
    人类或小鼠染色体长度文件获取 hg19 mm10.chrom.sizes
    多线程编程(1)
    基于遗传算法的大规模电动汽车充电行为优化
    kubernetes集群搭建
    TOUGH2系列建模方法及在CO2地质封存、水文地球化学、地热、地下水污染等领域中的实践技术应用
    前端JS算法--插入排序
    Linux环境及Linux命令
    Maven
  • 原文地址:https://blog.csdn.net/sgsgkxkx/article/details/126411403