在本地浏览器上查看远程服务器上的tensorboard

1. keras中生成tensorboard日志信息

       由于tensorboard日志是记录并且可视化训练过程的各个指标和权重信息的,所以需要通过回调函数来实现训练过程中的记录,然后将相应的回调函数传给模型的fit方法即可。如下所示,tf.keras.callbacks中有现成的回调函数,然后将其传给fit方法的callback参数即可。训练完成后就会在logdir目录下生成相应的信息文件。

log_dir = "logs/fit/" + datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=log_dir, histogram_freq=1)

model.fit(x=x_train, 
          y=y_train, 
          epochs=5, 
          validation_data=(x_test, y_test), 
          callbacks=[tensorboard_callback])

2. 打开tensorboard

       在shell中执行如下命令,传入相应路径参数,端口可以随便设,只要不和当前机器上的服务端口冲突即可,如下默认端口为6006。

tensorboard --logdir logdir --port 6006

3. 建立服务器和本地的连接,实现端口转发

       由于linux服务器上往往没有浏览器直接查看tensorboard,因此可以通过在本地建立和服务器的连接,并线进行端口转发,将linux服务器上tensorboard服务信息转发到本地,然后可以直接在本地浏览器中查看tensorboard。

       本文介绍的实现连接的方式是通过xshell。xshell是一个连接管理远程服务器的工具,先通过xshell在本地登陆远程服务器,建立本地和服务器的连接,接下来就是通过xshell实现端口转发。

       步骤是,先点击xshell界面中的属性设置按钮,如下圈红所示。

在本地浏览器上查看远程服务器上的tensorboard_第1张图片

       点击之后出现如下界面。

在本地浏览器上查看远程服务器上的tensorboard_第2张图片

         出现上述界面后,依次点击 连接 ---> SSH ---> 隧道,然后再点击 添加,会出现如下界面,这时需要在侦听端口处填写本地用来侦听服务器tensorboard的端口号,随便填写,只要不和本地服务端口冲突即可,比如12345;目标端口是侦听对象的服务端口,这个端口就是执行命令tensorboard --logdir logdir --port 6006中指定的端口,该端口表示启动tensorboard服务后用来交流信息的端口,因此本例中下面的目标端口就是6006,当然也可以填其他的,只要和tensorboard服务的端口保持一致即可。

在本地浏览器上查看远程服务器上的tensorboard_第3张图片

       隧道建立完成后,执行tensorboard命令后会出现一个类似 http://hostname:port/的url,这时将该url拷贝到本地浏览器中即可显示tensorboard。

       需要注意的是,本地不一定可以解析该url的域名,因此如何直接拷贝行不通,则可以将你的远端服务器ip地址加端口号(如192.67.38.256:6006)输入浏览器,这样是可以保证监听到相应端口信息,从而查看tensorboard的。

你可能感兴趣的:(tensorflow,keras,机器学习)