当前位置: 代码迷 >> 综合 >> Tesorflow基本用法(tensorboard)
  详细解决方案

Tesorflow基本用法(tensorboard)

热度:87   发布时间:2023-12-15 17:37:53.0

【环境】

Python 3.6.7
Tensorflow 1.12.0

1,With基本用法

# 在with中使用自定义的类,一定至少要定义__enter__和__exit__两个方法class A():def __enter__(self):self.a = 5return self.adef __exit__(self, exc_type, exc_val, exc_tb):print('exit')with A() as b:print(b)# 输出
# 5
# exit

2,Tensorflow两数相加(为了逐步展示tensorflow基本原理,采用了逐渐复杂的四种方法)

# 第一种方法
import tensorflow as tfa = tf.Variable(1)
b = tf.Variable(2)
c = a + binit = tf.global_variables_initializer()sess = tf.Session()sess.run(init)print(sess.run(c))# 输出
# 3

# 第二种方法,使用with
import tensorflow as tfa = tf.Variable(1)
b = tf.Variable(2)
c = a + binit = tf.global_variables_initializer()with tf.Session() as sess:sess.run(init)print(sess.run(c))# 输出
# 3

 


# 第三种方法,使用with 和 placeholder,也是通常的用法
import tensorflow as tfa = tf.placeholder(tf.int64)
b = tf.placeholder(tf.int64)c = a + binit = tf.global_variables_initializer()with tf.Session() as sess:sess.run(init)print(sess.run(c, feed_dict={a: 1, b: 2}))# 输出
# 3

# 第四种方法,使用with 和 placeholder,并在tensorboard可视化一下
import tensorflow as tfa = tf.placeholder(tf.int16, name='a')
b = tf.placeholder(tf.int16, name='b')with tf.name_scope('Add_function'):  # 此声明下面包含的运算在tensorboard计算图中会显示在同一个方块中,如果声明下不包含运算,则不显示方块c = a + b# c1 = tf.reduce_mean(c)  # 求c中所有元素均值,可以用来将传入的参数转化为一个数值,按需使用tf.summary.scalar('result', c)  # tf.summary.scalar(tags, values)两个参数:第一个参数表示在tensorboard中显示的名字,第二个参数loss应为一个标量,即一个数值,否则报错init = tf.global_variables_initializer()merge = tf.summary.merge_all()with tf.Session() as sess:sess.run(init)summary_writer = tf.summary.FileWriter(logdir='logs', graph=sess.graph)summary, result = sess.run([merge, c], feed_dict={a: 1, b: 2})summary_writer.add_summary(summary)summary_writer.close()print(result)# 输出
# 3# 第四种方法会在程序所在目录生成logs文件夹,打开终端,进入程序所在目录(logs所在的目录)
# $ cd 程序所在目录
# $ tensorboard --logdir logs# 终端输出为:
# TensorBoard 1.12.2 at http://xxxx:6006 (Press CTRL+C to quit)

# 在浏览器打开http://localhost:6006/ 即可看到曲线图和计算图,本例中曲线只有1个点,即求和的结果3
# 注意每次运行程序都会在logs文件夹下生成1个文件,如需修改程序并在浏览器看新效果,需要先清空logs文件夹再运行修改后的程序,之后再在浏览器查看效果

 

第四种方法对应的图

-------------------------------------------------------------------------------------------------------

其他:

1,同时看多个tensorboard(打开其他端口):

# tensorboard --logdir=tmp --port=6005# tmp是当前目录中包含 events.out.tfevents.xxxx.xxxpc 类似文件的文件夹

参考:https://blog.csdn.net/feynman233/article/details/86480974

2,在一个tensorboard中显示多条曲线

参考:https://blog.csdn.net/shahuzi/article/details/81223980#commentBox

3,模型训练结束之后产生的静态event文件也可以通过tensorboard进行查看。如果复制网址到浏览器,tensorboard页面无法显示,可以试试绝对路径:

tensorboard --logdir=D:\Projects\xxx\logs --port=6005

4,Tensorboard界面说明:https://blog.csdn.net/qq_33039859/article/details/80277379

5,Tensorboard中同时看多条曲线:

D:\tmp\retrain_logs>tensorboard --logdir=. # 点号.代表当前文件夹

retrain_logs下有两个文件夹,每个文件夹下都有一个event文件。这样写能让两条曲线显示在同一个页面中,并且可以自由选择显示什么曲线。参考链接。

6,【远程使用tensorboard】

# 从本地登录到服务器,用端口转发的方式登录。将远程服务器(xx.xxx.xxx.xx)的6009端口转发到本地的8001端口
# 在本地终端运行下面的命令(xxx是登录远程服务器使用的用户名),比如在moba xterm中新建一个terminal,输入:
ssh -L 8001:localhost:6009 xxx@xx.xxx.xxx.xx
# 此时已经把服务器对应的6009端口映射到了本地的8001端口
# 可能需要输入密码才能登录(如果之前没有在moba xterm中保存过密码的话)# 此时已经进入服务器命令界面(因为已经登录)
# 进入tensorflow训练产生的log文件所在的上级目录,如folder1
# folder1中可以包含多个子文件夹,每个子文件夹中都有单独的log文件,这样可以在一个tensorboard浏览器界面中同时对比查看多条曲线。
# 在服务器终端输入:
$ cd ~/projects/folder1# 可视化log文件,继续在服务器终端输入:
$ tensorboard --logdir ./ --port=6009# 在本地浏览器输入:
http://127.0.0.1:8001/#【致谢】https://blog.csdn.net/zhaokx3/article/details/70994350

 

  相关解决方案