Есть ли способ использовать TensorBoard при обучении модели TensorFlow в Google Colab?
Могу ли я использовать TensorBoard с Google Colab?
Ответ 1
ОБНОВЛЕНИЕ: Вы, вероятно, хотите попробовать официальный %tensorboard
волшебный, доступный в TensorFlow 1.13 и далее.
До существования магии %tensorboard
, стандартный способ
добиться этого было прокси сетевого трафика на ВМ Colab с помощью
ngrok. Пример с Colab можно найти здесь here.
Это шаги (фрагменты кода представляют ячейки типа "код" в colab):
Запустите TensorBoard в фоновом режиме.
Вдохновлен этим ответом.LOG_DIR = '/tmp/log' get_ipython().system_raw( 'tensorboard --logdir {} --host 0.0.0.0 --port 6006 &' .format(LOG_DIR) )
Загрузите и разархивируйте ngrok.
Замените ссылку, переданную наwget
, правильной ссылкой для загрузки вашей ОС.! wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip ! unzip ngrok-stable-linux-amd64.zip
Запустить фоновый процесс ngrok...
get_ipython().system_raw('./ngrok http 6006 &')
... и получить общедоступный URL. Источник
! curl -s http://localhost:4040/api/tunnels | python3 -c \ "import sys, json; print(json.load(sys.stdin)['tunnels'][0]['public_url'])"
Ответ 2
Вот более простой способ сделать тот же метод туннелирования ngrok в Google Colab.
!pip install tensorboardcolab
затем,
from tensorboardcolab import TensorBoardColab, TensorBoardColabCallback
tbc=TensorBoardColab()
Предполагая, что вы используете Keras:
model.fit(......,callbacks=[TensorBoardColabCallback(tbc)])
Вы можете прочитать оригинальный пост здесь.
Ответ 3
TensorBoard для TensorFlow работает на Google Colab с использованием тензорной доски. Это использует ngrok для туннелирования.
- Установить TensorBoardColab
!pip install tensorboardcolab
- Создать объект tenorboardcolab
tbc = TensorBoardColab()
Это автоматически создает ссылку TensorBoard, которую можно использовать. Этот Tensorboard читает данные в './Graph'
- Создайте FileWriter, указывающий на это местоположение
summary_writer = tbc.get_writer()
В библиотеке tenorboardcolab есть метод, который возвращает объект FileWriter, указывающий на местоположение выше. /Graph.
- Начните добавлять сводную информацию в файлы событий в месте './Graph', используя объект summary_writer
Вы можете добавить скалярную информацию или график или данные гистограммы.
Ответ 4
Я пытался, но не получил результат, но при использовании, как показано ниже, получил результаты
import tensorboardcolab as tb
tbc = tb.TensorBoardColab()
После этого откройте ссылку с выхода.
import tensorflow as tf
import numpy as np
Явно создайте объект Graph
graph = tf.Graph()
with graph.as_default()
Полный пример:
with tf.name_scope("variables"):
# Variable to keep track of how many times the graph has been run
global_step = tf.Variable(0, dtype=tf.int32, name="global_step")
# Increments the above 'global_step' Variable, should be run whenever the graph is run
increment_step = global_step.assign_add(1)
# Variable that keeps track of previous output value:
previous_value = tf.Variable(0.0, dtype=tf.float32, name="previous_value")
# Primary transformation Operations
with tf.name_scope("exercise_transformation"):
# Separate input layer
with tf.name_scope("input"):
# Create input placeholder- takes in a Vector
a = tf.placeholder(tf.float32, shape=[None], name="input_placeholder_a")
# Separate middle layer
with tf.name_scope("intermediate_layer"):
b = tf.reduce_prod(a, name="product_b")
c = tf.reduce_sum(a, name="sum_c")
# Separate output layer
with tf.name_scope("output"):
d = tf.add(b, c, name="add_d")
output = tf.subtract(d, previous_value, name="output")
update_prev = previous_value.assign(output)
# Summary Operations
with tf.name_scope("summaries"):
tf.summary.scalar('output', output) # Creates summary for output node
tf.summary.scalar('product of inputs', b, )
tf.summary.scalar('sum of inputs', c)
# Global Variables and Operations
with tf.name_scope("global_ops"):
# Initialization Op
init = tf.initialize_all_variables()
# Collect all summary Ops in graph
merged_summaries = tf.summary.merge_all()
# Start a Session, using the explicitly created Graph
sess = tf.Session(graph=graph)
# Open a SummaryWriter to save summaries
writer = tf.summary.FileWriter('./Graph', sess.graph)
# Initialize Variables
sess.run(init)
def run_graph(input_tensor):
"""
Helper function; runs the graph with given input tensor and saves summaries
"""
feed_dict = {a: input_tensor}
output, summary, step = sess.run([update_prev, merged_summaries, increment_step], feed_dict=feed_dict)
writer.add_summary(summary, global_step=step)
# Run the graph with various inputs
run_graph([2,8])
run_graph([3,1,3,3])
run_graph([8])
run_graph([1,2,3])
run_graph([11,4])
run_graph([4,1])
run_graph([7,3,1])
run_graph([6,3])
run_graph([0,2])
run_graph([4,5,6])
# Writes the summaries to disk
writer.flush()
# Flushes the summaries to disk and closes the SummaryWriter
writer.close()
# Close the session
sess.close()
# To start TensorBoard after running this file, execute the following command:
# $ tensorboard --logdir='./improved_graph'
Ответ 5
Вот как вы можете отображать свои модели inline в Google Colab. Ниже представлен очень простой пример, отображающий местозаполнитель:
from IPython.display import clear_output, Image, display, HTML
import tensorflow as tf
import numpy as np
from google.colab import files
def strip_consts(graph_def, max_const_size=32):
"""Strip large constant values from graph_def."""
strip_def = tf.GraphDef()
for n0 in graph_def.node:
n = strip_def.node.add()
n.MergeFrom(n0)
if n.op == 'Const':
tensor = n.attr['value'].tensor
size = len(tensor.tensor_content)
if size > max_const_size:
tensor.tensor_content = "<stripped %d bytes>"%size
return strip_def
def show_graph(graph_def, max_const_size=32):
"""Visualize TensorFlow graph."""
if hasattr(graph_def, 'as_graph_def'):
graph_def = graph_def.as_graph_def()
strip_def = strip_consts(graph_def, max_const_size=max_const_size)
code = """
<script>
function load() {{
document.getElementById("{id}").pbtxt = {data};
}}
</script>
<link rel="import" href="https://tensorboard.appspot.com/tf-graph-basic.build.html" onload=load()>
<div style="height:600px">
<tf-graph-basic id="{id}"></tf-graph-basic>
</div>
""".format(data=repr(str(strip_def)), id='graph'+str(np.random.rand()))
iframe = """
<iframe seamless style="width:1200px;height:620px;border:0" srcdoc="{}"></iframe>
""".format(code.replace('"', '"'))
display(HTML(iframe))
"""Create a sample tensor"""
sample_placeholder= tf.placeholder(dtype=tf.float32)
"""Show it"""
graph_def = tf.get_default_graph().as_graph_def()
show_graph(graph_def)
В настоящее время вы не можете запустить службу Tensorboard в Google Colab так, как вы ее запускаете локально. Кроме того, вы не можете экспортировать весь свой журнал на свой диск через нечто вроде summary_writer = tf.summary.FileWriter('./logs', graph_def=sess.graph_def)
, чтобы затем загрузить его и посмотреть на него локально.
Ответ 6
Я использую резервную копию Google Drive и синхронизирую https://www.google.com/drive/download/backup-and-sync/. Файлы событий, которые предварительно сохраняются на моем диске Google во время обучения, автоматически синхронизируются с папкой на моем компьютере. Пусть называют эту папку logs
. Для доступа к визуализациям в tenorboard я открываю командную строку, перехожу к папке синхронизированного диска Google и tensorboard --logdir=logs
: tensorboard --logdir=logs
.
Поэтому, автоматически синхронизируя мой привод с моим компьютером (используя резервное копирование и синхронизацию), я могу использовать тензорную доску, как будто я тренируюсь на своем собственном компьютере.
Изменить: Вот ноутбук, который может быть полезным. https://colab.research.google.com/gist/MartijnCa/961c5f4c774930f4bdd32d51829da6f6/tensorboard-with-google-drive-backup-and-sync.ipynb
Ответ 7
Есть альтернативное решение, но мы должны использовать предварительный просмотр TFv2.0. Поэтому, если у вас нет проблем с миграцией, попробуйте это:
установить tfv2.0 для GPU или CPU (TPU пока недоступен)
ЦПУ
тс-ночной-2,0-просмотр
GPU
тс-ночной-ГП-2,0-просмотр
%%capture
!pip install -q tf-nightly-gpu-2.0-preview
# Load the TensorBoard notebook extension
%load_ext tensorboard.notebook
импортировать TensorBoard как обычно:
from tensorflow.keras.callbacks import TensorBoard
Очистите или создайте папку, в которую нужно сохранить логи (запустите эти строки перед запуском тренировки fit()
)
# Clear any logs from previous runs
import time
!rm -R ./logs/ # rf
log_dir="logs/fit/{}".format(time.strftime("%Y%m%d-%H%M%S", time.gmtime()))
tensorboard = TensorBoard(log_dir=log_dir, histogram_freq=1)
Веселитесь вместе с TensorBoard! :)
%tensorboard --logdir logs/fit
Здесь официальная записная книжка Colab и репо на GitHub
Новый альфа-релиз TFv2.0:
ЦПУ !pip install -q tensorflow==2.0.0-alpha0
GPU !pip install -q tensorflow-gpu==2.0.0-alpha0
Ответ 8
Чтобы присоединиться к ответу @solver149, вот простой пример использования TensorBoard в Google Colab
1.Создайте график, например:
a = tf.constant(3.0, dtype=tf.float32)
b = tf.constant(4.0)
total = a + b
2. Установите Tensorboard
!pip install tensorboardcolab # to install tensorboeadcolab if it does not it not exist
==> Результат в моем случае:
Requirement already satisfied: tensorboardcolab in /usr/local/lib/python3.6/dist-packages (0.0.22)
3. Используйте это :)
Первый из всех импортируемых TensorBoard из tenzorboaedcolab (вы можете использовать import*
чтобы импортировать все сразу), а затем создайте свой tenorsboeardcolab, после этого прикрепите к нему средство записи следующим образом:
from tensorboardcolab import *
tbc = TensorBoardColab() # To create a tensorboardcolab object it will automatically creat a link
writer = tbc.get_writer() # To create a FileWriter
writer.add_graph(tf.get_default_graph()) # add the graph
writer.flush()
==> Результат
Using TensorFlow backend.
Wait for 8 seconds...
TensorBoard link:
http://cf426c39.ngrok.io
4.Проверьте данную ссылку: D
Этот пример был токеном из руководства TF: TensorBoard.
Ответ 9
Я пытался показать TensorBoard на Google Colab сегодня,
# in case of CPU, you can this line
# !pip install -q tf-nightly-2.0-preview
# in case of GPU, you can use this line
!pip install -q tf-nightly-gpu-2.0-preview
# %load_ext tensorboard.notebook # not working on 22 Apr
%load_ext tensorboard # you need to use this line instead
import tensorflow as tf
"################
делать тренировки
"################
# show tensorboard
%tensorboard --logdir logs/fit
Вот фактический пример, сделанный Google. https://colab.research.google.com/github/tensorflow/tensorboard/blob/master/docs/r2/get_started.ipynb
Ответ 10
TensorBoard работает с Google Colab и TensorFlow 2.0
!pip install tensorflow==2.0.0-alpha0
%load_ext tensorboard.notebook
Ответ 11
Простой и легкий способ, который я нашел до сих пор:
Получить файл setup_google_colab.py с помощью wget
!wget https://raw.githubusercontent.com/hse-aml/intro-to- dl/master/setup_google_colab.py -O setup_google_colab.py
import setup_google_colab
Чтобы запустить тензорную доску в фоновом режиме, откройте порт и нажмите на ссылку.
Я предполагаю, что у вас есть правильная добавленная стоимость для визуализации в вашем резюме, а затем объединить все резюме.
import os
os.system("tensorboard --logdir=./logs --host 0.0.0.0 --port 6006 &")
setup_google_colab.expose_port_on_colab(6006)
После запуска приведенных выше заявлений вам будет предложено с ссылкой, как:
Open https://a1b2c34d5.ngrok.io to access your 6006 port
Для получения дополнительной помощи обратитесь к следующему git:
https://github.com/MUmarAmanat/MLWithTensorflow/blob/master/colab_tensorboard.ipynb
Ответ 12
Да, безусловно, использовать тензорную доску в Google Colab довольно просто. Следуйте следующему steps-
1) Загрузите удлинитель тензорной доски
%load_ext tensorboard.notebook
2) Добавить его в обратный вызов keras
tensorboard_callback = tf.keras.callbacks.TensorBoard(logdir, histogram_freq=1)
3) Запустить тензорную доску
%tensorboard — logdir logs
Надеюсь, поможет.
Ответ 13
Многие из ответов здесь уже устарели. Так будет моим, я уверен, через несколько недель. Но на момент написания этой статьи все, что мне нужно было сделать, это запустить эти строки кода из colab. И тензорная доска открылась просто отлично.
%load_ext tensorboard
%tensorboard --logdir logs
Ответ 14
Использование summary_writer для записи журнала в каждую эпоху в папке, а затем выполнение следующей магии работало для меня.
%load_ext tensorboard
%tensorboard --logdir=./logs