我可以将Tensorboard与Google Colab一起使用吗?

oci*_*ule 61 tensorflow tensorboard google-colaboratory

在Google Colab上训练Tensorflow模型时,有没有办法使用Tensorboard?

Jop*_*ens 71

我目前使用ngrok将流量隧道传输到localhost.
可在此处找到colab示例.

这些是步骤(代码片段代表colab中"代码"类型的单元格):

  1. 让TensorBoard在后台运行.
    灵感来自这个答案.

    LOG_DIR = '/tmp/log'
    get_ipython().system_raw(
        'tensorboard --logdir {} --host 0.0.0.0 --port 6006 &'
        .format(LOG_DIR)
    )
    
    Run Code Online (Sandbox Code Playgroud)
  2. 下载并解压缩ngrok.
    使用%tensorboard正确的操作系统下载链接替换传递给的链接.

    ! wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
    ! unzip ngrok-stable-linux-amd64.zip
    
    Run Code Online (Sandbox Code Playgroud)
  3. 启动ngrok后台进程......

    get_ipython().system_raw('./ngrok http 6006 &')
    
    Run Code Online (Sandbox Code Playgroud)

    ...并检索公共网址. 资源

    ! curl -s http://localhost:4040/api/tunnels | python3 -c \
        "import sys, json; print(json.load(sys.stdin)['tunnels'][0]['public_url'])"
    
    Run Code Online (Sandbox Code Playgroud)


Raj*_*ajV 55

这里的许多答案现在已经过时了。所以将是我的,我相信在几周内。但在撰写本文时,我所要做的就是从 colab 运行这些代码行。张量板打开得很好。

%load_ext tensorboard
%tensorboard --logdir logs
Run Code Online (Sandbox Code Playgroud)

  • 您好,感谢您的评论。你在colab笔记本中运行过这两行吗?我这样做了,我的笔记本中出现了一个 TensorBoard 窗口,其中显示“当前数据集没有活动的仪表板”。信息。你能帮助我吗? (2认同)

Kes*_*han 19

这是在Google Colab上执行相同ngrok隧道方法的更简单方法.

!pip install tensorboardcolab
Run Code Online (Sandbox Code Playgroud)

然后,

from tensorboardcolab import TensorBoardColab, TensorBoardColabCallback

tbc=TensorBoardColab()
Run Code Online (Sandbox Code Playgroud)

假设您正在使用Keras:

model.fit(......,callbacks=[TensorBoardColabCallback(tbc)])
Run Code Online (Sandbox Code Playgroud)

你可以在这里阅读原帖.


小智 11

使用tensorboardcolab在Google Colab上运行TensorFo的TensorBoard.这在内部使用ngrok进行隧道传输.

  1. 安装TensorBoardColab

!pip install tensorboardcolab

  1. 创建一个tensorboardcolab对象

tbc = TensorBoardColab()

这会自动创建可以使用的TensorBoard链接.此Tensorboard正在读取'./Graph'中的数据

  1. 创建指向此位置的FileWriter

summary_writer = tbc.get_writer()

tensorboardcolab库具有返回指向上面'./Graph'位置的FileWriter对象的方法.

  1. 使用summary_writer对象开始将摘要信息添加到'./Graph'位置的事件文件中

您可以添加标量信息或图形或直方图数据.

参考:https://github.com/taomanwai/tensorboardcolab


小智 6

我尝试过但没有得到结果,但是当按如下方式使用时,得到了结果

import tensorboardcolab as tb
tbc = tb.TensorBoardColab()
Run Code Online (Sandbox Code Playgroud)

之后,打开输出中的链接。

import tensorflow as tf
import numpy as np
Run Code Online (Sandbox Code Playgroud)

明确创建一个Graph对象

graph = tf.Graph()
with graph.as_default()
Run Code Online (Sandbox Code Playgroud)

完整的例子:

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'
Run Code Online (Sandbox Code Playgroud)


JMA*_*JMA 5

以下是在 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('"', '&quot;'))
    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)
Run Code Online (Sandbox Code Playgroud)

目前,您无法像在本地运行那样在 Google Colab 上运行 Tensorboard 服务。此外,您无法通过类似方式将整个日志导出到您的云端硬盘,summary_writer = tf.summary.FileWriter('./logs', graph_def=sess.graph_def)以便您可以下载并在本地查看。