Keras+TensorBoard可视化异常求助:Ubuntu服务器无面板显示
我之前在Ubuntu 14.04上用Keras+TensorFlow后端时,也碰到过一模一样的问题,咱们从最容易忽略的细节开始排查:
1. 先修正TensorBoard启动命令的参数错误
你启动命令里的--log==/home/tharun/Desktop/logs是错的!多打了一个等号,正确的参数是--logdir,要么用--logdir=/path要么用--logdir /path。这个小错误会直接导致TensorBoard找不到正确的日志目录,这大概率是核心问题!
修正后的启动命令应该是:
tensorboard --port 13987 --logdir=/home/tharun/Desktop/logs
或者不带等号的写法:
tensorboard --port 13987 --logdir /home/tharun/Desktop/logs
改完重启TensorBoard,再刷新浏览器试试。
2. 检查版本兼容性问题
你用的TensorBoard是0.4.0rc3,这个版本实在太老了,而Keras生成的tfevents文件可能是基于较新的TensorFlow版本,旧版TensorBoard根本解析不了新格式的日志数据。
先看看你当前TensorFlow的版本:
python -c "import tensorflow as tf; print(tf.__version__)"
如果TensorFlow版本是1.x或者更高,赶紧把TensorBoard升级到匹配的版本:
pip install --upgrade tensorboard
要是Ubuntu 14.04的Python环境有依赖冲突,可以指定对应版本安装,比如TensorFlow 1.15.x就装TensorBoard 1.15.x:
pip install --upgrade tensorboard==1.15.0
3. 确认Keras TensorBoard回调的配置正确
别忽略了训练脚本里的回调设置,要是参数不对,生成的日志也不会有可用的面板数据:
histogram_freq必须设为大于0的数,才会生成直方图数据;log_dir要和你启动TensorBoard时用的路径完全一致;- 确保
write_graph、write_images这些参数是开启的。
给你个正确的回调配置示例:
from keras.callbacks import TensorBoard tb_callback = TensorBoard( log_dir='/home/tharun/Desktop/logs', histogram_freq=1, # 每1个epoch记录一次直方图 write_graph=True, write_images=True, update_freq='epoch' # 按epoch更新训练指标 ) # 训练时把回调传进去 model.fit(x_train, y_train, epochs=10, callbacks=[tb_callback])
要是之前histogram_freq设成了0,那肯定不会生成直方图,TensorBoard自然没东西显示。
4. 清空旧日志重新生成数据
有时候旧的日志文件可能损坏或者格式混乱,先清空日志目录,重新跑训练生成新的tfevents文件,再启动TensorBoard:
rm -rf /home/tharun/Desktop/logs/* # 重新运行你的Keras训练脚本 tensorboard --port 13987 --logdir=/home/tharun/Desktop/logs
5. 排除远程访问的问题
如果以上都没用,试试在服务器本地直接访问TensorBoard(比如服务器有桌面环境的话开本地浏览器,或者用curl测试):
curl http://localhost:13987
要是本地能正常加载,那可能是SSH X转发的问题,可以试试用SSH端口转发替代X转发,比如在本地机器执行:
ssh -L 13987:localhost:13987 tharun@172.26.175.67
然后在本地浏览器访问http://localhost:13987,这样比X转发更稳定。
内容的提问来源于stack exchange,提问作者geek

