" 阅读本文大概需要 6 分钟 "
今天上午在制作演示案例的时候,需要使用TensorBoard将训练过程可视化出来,原本想着很简单的,但是还是遇到了一些bug,现在就把当时我遇到的一些问题整理出来,请看文章。
bug从何而来
我们先来写一个小的demo:借用keras来加载FashionMNIST数据集,并自定义训练模型,其网络层级结构如下图所示:
核心层代码如下所示:
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,请看如下代码:
# 初始化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)
接着,我们进入终端执行如下命令:
tensorboard --logdir=/full_path_to_your_logs/train
小伙伴们请注意,我遇到的bug就是从这里开始的,请看问题:
Mac下的Anaconda prompt
首先,我们明确一点,mac下的anaconda prompt就是自带的terminal,我们来打开terminal,输入如下命令,发现报错信息如下所示:
我们发现错误信息提示我们并不能找到tensorboard的的相关命令,请看解决方法。
我们继续在终端中输入如下命令:
vim ~/.zshrc
并向.zshrc文件中添加如下命令:
source ~/.bash_profile
执行完上述操作之后,我们保存并退出vim,在终端中执行如下命令:
source ~/.zshrc
执行完上述所有操作之后,我们发现terminal中命令行的最前面多了一个(base)字样,我们接着继续输入tensorboard,发现如下信息:
我们发现,此时的报错信息不再是...command not found...之类的信息,而是提示我们在使用tensorboard的时候应该加上logdir或db等参数信息。
好的,解决了上述问题之后,我们回到上文提到的那个例子当中。
首先,给小伙伴们看一下我们的项目目录:
接着,我们来看具体的操作:
最后,我们通过如下地址(http://localhost:6006/)即可在网页端查看可视化过程:
that's great,解决了bug,接下来我们就可以为所欲为啦~
...command not found...
其实在上文中,我们在讲解mac下的anaconda prompt时,就已经提及到了一种解决方法,接下来,我们看第二种解决方法。
仍然是在项目文件目录下,我们输入如下命令:
alias tensorboard='python3 -m tensorboard.main'
执行完上述命令之后,我们接着执行tensorboard的启动命令,请看下图:
tensorboard启动成功,以上就是我在启动tensorboard过程中遇到的几个bug,小伙伴们学会了吗?希望能够给各位小伙伴带来一丝丝帮助!
- End -