bug合集|艰难的TensorBoard可视化之路

2020-10-28 17:23:33 浏览数 (1)

" 阅读本文大概需要 6 分钟 "

前言

今天上午在制作演示案例的时候,需要使用TensorBoard将训练过程可视化出来,原本想着很简单的,但是还是遇到了一些bug,现在就把当时我遇到的一些问题整理出来,请看文章。

bug从何而来

我们先来写一个小的demo:借用keras来加载FashionMNIST数据集,并自定义训练模型,其网络层级结构如下图所示:

核心层代码如下所示:

代码语言:javascript复制
  def __init__(self):
      self.cnn_1 = tf.keras.layers.Conv2D(32,3,activation=tf.nn.relu)
      self.batch_norm_1 = tf.keras.layers.BatchNormalization()

      self.cnn_2 = tf.keras.layers.Conv2D(64,3,activation=tf.nn.relu)
      self.batch_norm_2 = tf.keras.layers.BatchNormalization()

      self.cnn_3 = tf.keras.layers.Conv2D(128,3,activation=tf.nn.relu)
      self.batch_norm_3 = tf.keras.layers.BatchNormalization()

      self.last_dense = tf.keras.layers.Dense(10,activation=tf.nn.softmax)

现在我们的需求是将训练过程可视化展示出来,因此我们需要初始化TensorBoard,请看如下代码:

代码语言:javascript复制
# 初始化tensorboard
tensorboard = tf.keras.callbacks.TensorBoard(histogram_freq=1)
model.fit(x=train_images,y=train_labels,epochs=20,verbose=2,callbacks=[tensorboard])
model.evaluate(x=test_images,y=test_labels)

接着,我们进入终端执行如下命令:

代码语言:javascript复制
tensorboard --logdir=/full_path_to_your_logs/train

小伙伴们请注意,我遇到的bug就是从这里开始的,请看问题:

  1. 如何进入Mac下的Anaconda prompt
  2. zsh:command not found:tensorboard问题的解决方法。

Mac下的Anaconda prompt

首先,我们明确一点,mac下的anaconda prompt就是自带的terminal,我们来打开terminal,输入如下命令,发现报错信息如下所示:

我们发现错误信息提示我们并不能找到tensorboard的的相关命令,请看解决方法。

我们继续在终端中输入如下命令:

代码语言:javascript复制
vim ~/.zshrc

并向.zshrc文件中添加如下命令:

代码语言:javascript复制
source ~/.bash_profile

执行完上述操作之后,我们保存并退出vim,在终端中执行如下命令:

代码语言:javascript复制
source ~/.zshrc

执行完上述所有操作之后,我们发现terminal中命令行的最前面多了一个(base)字样,我们接着继续输入tensorboard,发现如下信息:

我们发现,此时的报错信息不再是...command not found...之类的信息,而是提示我们在使用tensorboard的时候应该加上logdir或db等参数信息。

好的,解决了上述问题之后,我们回到上文提到的那个例子当中。

首先,给小伙伴们看一下我们的项目目录:

接着,我们来看具体的操作:

最后,我们通过如下地址(http://localhost:6006/)即可在网页端查看可视化过程:

that's great,解决了bug,接下来我们就可以为所欲为啦~

...command not found...

其实在上文中,我们在讲解mac下的anaconda prompt时,就已经提及到了一种解决方法,接下来,我们看第二种解决方法。

仍然是在项目文件目录下,我们输入如下命令:

代码语言:javascript复制
alias tensorboard='python3 -m tensorboard.main'

执行完上述命令之后,我们接着执行tensorboard的启动命令,请看下图:

tensorboard启动成功,以上就是我在启动tensorboard过程中遇到的几个bug,小伙伴们学会了吗?希望能够给各位小伙伴带来一丝丝帮助!

- End -

0 人点赞