tensorflow基础【5】-tensorboard

2022-02-20

先学几个英文单词

总结,总结

范围范围

这是我很久以前做的一个笔记,后来我有博客的时候发表了。有些内容老了,懒得改了。

先解释一下整体流程

暂时不管你怎么编程,假设你已经有了下面的代码,可执行。

# encoding:utf-8
import tensorflow as tf
print('version:', tf.__version__)
foo = tf.Variable(3, name='foo')
bar = tf.Variable(2, name='bar')
result = tf.add(foo, bar, name='add')
# 初始化变量
init = tf.global_variables_initializer()
# 启动图 (graph)
sess = tf.Session()
sess.run(init)
res = sess.run(result)
print('result:', res)
train_writer = tf.summary.FileWriter('log2', sess.graph)

可视化,先感性理解

可视化简要步骤

1.运行代码

// 至此,log2中已经生成了文件

2.启动可视化器,两种方式

一个。找到下面的.py文件,运行文件,.py –=…../log2/ 注意这里的路径要和代码中的路径一致(这是老版本)

湾。直接运行 –host=10.10.101.2 –port=6099 –=””

// .exe文件,和.exe在同一个路径

// 无需额外安装,安装完成后会自动安装

//端口主机可选

// 不带引号的目录

3. 在浏览器中访问:6006,点击查看

4. 注意每次运行代码都需要重启工具

详细说明

1. 数据序列化

tf可视化其实是将操作数据序列化到本地,然后使用浏览器加载数据

这个本地文件称为“事件文件”,由

weights = tf.Variable(tf.random_normal([3,2]), name='w')
sess = tf.Session()
writer = tf.summary.FileWriter('log2', sess.graph)    # 序列化

两个参数,第一个参数是序列化地址,第二个参数是可选的。如果输入此参数,将显示图像。

2. 名称的范围

tf.() 会创建一个作用域,作用域下的变量名会加上作用域的名字

with tf.name_scope('test'):
    weights = tf.Variable(tf.random_normal([3,2]), name='w')
sess = tf.Session()
writer = tf.summary.FileWriter('log2', sess.graph)

以上两步基本就可以实现绘图了。

但可视化不仅仅是绘画

3.可视化

1. 是那些变量,序列化并存储在本地

// 通过将操作附加到节点来输出变量

2. 是一个图,图中只有网络结构,没有数据

3. 是直方图,将数据绘制为直方图

// 通过向节点附加操作来输出直方图

其实这是先存储数据,然后再进行可视化,所以还需要在绘画中执行,所以如果要输出很多数据,需要在中一个一个输出,也就是很麻烦

tf 提供了一个合并操作,就是将这些输出进行合并,在会话中一次性全部输出。接口 tf.()

# coding:utf-8
import tensorflow as tf
import numpy as np
# 此代码仅用于可视化

x_data = np.random.rand(100).astype("float32")
with tf.name_scope('y_data'):
    y_data = x_data * 2.5 + 0.8
    # tf.histogram_summary("method_demo"+"/y_data",y_data)
    tf.summary.histogram("method_demo"+"/y_data",y_data)
with tf.name_scope('W'):
    W = tf.Variable(tf.random_uniform([1], -200.0, 200.0))
    tf.summary.histogram("method_demo"+"/W",W)
with tf.name_scope('b'):
    b = tf.Variable(tf.zeros([1]))
    tf.summary.histogram("method_demo"+"/b",b)
with tf.name_scope('y'):
    y = W * x_data + b
    tf.summary.histogram("method_demo"+"/y",y)
# 最小化均方
with tf.name_scope('loss'):
    loss = tf.reduce_mean(tf.square(y - y_data))
    tf.summary.histogram("method_demo"+"/loss",loss)
    tf.summary.scalar("method_demo222"+'loss',loss)
optimizer = tf.train.GradientDescentOptimizer(0.7)
with tf.name_scope('train'):
    train = optimizer.minimize(loss)
init = tf.global_variables_initializer()
sess = tf.Session()
#合并到Summary中
merged = tf.summary.merge_all()
#选定可视化存储目录
writer = tf.summary.FileWriter('log2',sess.graph)
sess.run(init)
# 开始计算
for step in range(500):
    sess.run(train)
    # tf.histogram_summary('method_demo'+'/train',train)
    if step % 5 == 0:
        print(step, "W:",sess.run(W),"b:", sess.run(b))
        result = sess.run(merged)           #merged也是需要run的
        writer.add_summary(result,step)     #result是summary类型     (result 纵坐标  step 横坐标)

运行,可以在浏览器中访问

异常记录

1.(见上文):您必须使用 dtype float 和 shape [100,1] 为 ‘input/’ 提供一个值

这个问题我查了很久,各种答案,都是无效的。请参阅解决方案的代码。

# 以下皆可
    merged = tf.summary.merge_all()
    # merged = tf.summary.merge([loss_scalar])

    writer = tf.summary.FileWriter('logs', sess.graph)
    sess.run(init)
    for i in range(1000):
        loss2, _ = sess.run([loss, optimizer], feed_dict={input_x:x[:, np.newaxis], input_y:y[:, np.newaxis]})
        # result = sess.run(merged)     # 这样写报错
        # InvalidArgumentError (see above for traceback): You must feed a value for placeholder tensor 'input/input_y' with dtype float and shape [100,1]
        result = sess.run(merged, feed_dict={input_x:x[:, np.newaxis], input_y:y[:, np.newaxis]})
        writer.add_summary(result, i)

需要喂参数

参考:

分类:

技术要点:

相关文章:

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片