翼度科技»论坛 编程开发 python 查看内容

Kaggle上使用Tensorboard

10

主题

10

帖子

30

积分

新手上路

Rank: 1

积分
30
Kaggle上使用Tensorboard


1. 前言


  • 想在Kaggle上使用Tensorboard,找了一圈。
  • 参考了Kaggle上的一个Code:Tensorboard on Kaggle
  • 但发现有些变化,Code中用到的内网穿透工具Ngrok需要加一个Token,所以需要注册一个Ngrok账号,免费获取一个通道的Token。

2. Kaggle上使用Tensorboard


2.1. 方法一


  • 其实直接把在Kaggle上跑出来的Tensorboard日志文件下载到本地,在本地启动Tensorboard即可查看。
  • 当然,这里主要讲在线的方法。

2.2. 方法二


  • 在线使用Tensorboard
2.2.1. 获取一个Ngrok的免费通道


  • 访问Ngrok,注册一个账号并登录
  • 登录后界面如下,复制并保存你的Token

2.2.2. 调试运行代码


  • 主要参考Kaggle上的一个Code:Tensorboard on Kaggle
  • 建议分段运行,以避免中间出错,全部重新运行一次
  • 以下代码在Kaggle的Notebook中运行
(1) 环境准备
  1. import tensorflow as tf # This is how we import tf
复制代码
  1. # Clear any logs from previous runs
  2. # 清除以前运行的所有日志
  3. !rm -rf ./logs/
  4. !mkdir ./logs/
复制代码
(2) 启动Tensorboard
  1. # Download Ngrok to tunnel the tensorboard port to an external port
  2. # 下载 Ngrok 以将 tensorboard 端口隧道传输到外部端口
  3. !wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
  4. !unzip ngrok-stable-linux-amd64.zip
复制代码
  1. # 添加自己在 Ngrok 上获取的专属Token
  2. !./ngrok authtoken 粘贴你的专属Token
复制代码

  • 注意这一步需要添加自己在 Ngrok 上获取的专属Token
  1. # Run tensorboard as well as Ngrok (for tunneling as non-blocking processes)
  2. # 运行 tensorboard 和 Ngrok(用于作为非阻塞进程的隧道)
  3. import os
  4. import multiprocessing
  5. pool = multiprocessing.Pool(processes = 10)
  6. # --logdir ./logs/ 是 TensorBoard 的日志文件(log)路径
  7. # 你可以修改为你训练时的log保存路径(可以用绝对/相对路径),但相关的代码路径也要记得修改
  8. results_of_processes = [pool.apply_async(os.system, args=(cmd, ), callback = None )
  9.                         for cmd in [
  10.                         f"tensorboard --logdir ./logs/ --host 0.0.0.0 --port 6006 &",
  11.                         "./ngrok http 6006 &"
  12.                         ]]
复制代码

  • 获取访问 Tensorload 的URL,访问生成的URL即可看到 Tensorload 界面
  • 但还没有产生日志文件,所以现在还看不到有图形
  1. ! curl -s http://localhost:4040/api/tunnels | python3 -c \
  2.     "import sys, json; print(json.load(sys.stdin)['tunnels'][0]['public_url'])"
复制代码



(3) 创建和训练模型
  1. (x_train, y_train),(x_test, y_test) = mnist.load_data()
  2. x_train, x_test = x_train / 255.0, x_test / 255.0
  3. def create_model():
  4.   return tf.keras.models.Sequential([
  5.     tf.keras.layers.Flatten(input_shape=(28, 28)),
  6.     tf.keras.layers.Dense(512, activation='relu'),
  7.     tf.keras.layers.Dropout(0.2),
  8.     tf.keras.layers.Dense(10, activation='softmax')
  9.   ])
复制代码
  1. import datetime
  2. model = create_model()
  3. model.compile(optimizer='adam',
  4.               loss='sparse_categorical_crossentropy',
  5.               metrics=['accuracy'])
  6. log_dir = "logs/fit/" + datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
  7. tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=log_dir, histogram_freq=1)
  8. model.fit(x=x_train,
  9.           y=y_train,
  10.           epochs=10,
  11.           validation_data=(x_test, y_test),
  12.           callbacks=[tensorboard_callback])
复制代码

  • 产生日志文件后,就可以在打开的 Tensorboard 界面点击刷新,看到实时训练趋势了


<blockquote>
到底了
来源:https://www.cnblogs.com/jhy-ColdMoon/p/17341992.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具