oci*_*ule 61 tensorflow tensorboard google-colaboratory
在Google Colab上训练Tensorflow模型时,有没有办法使用Tensorboard?
Jop*_*ens 71
我目前使用ngrok将流量隧道传输到localhost.
可在此处找到colab示例.
这些是步骤(代码片段代表colab中"代码"类型的单元格):
让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)下载并解压缩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)启动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)
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进行隧道传输.
!pip install tensorboardcolab
tbc = TensorBoardColab()
这会自动创建可以使用的TensorBoard链接.此Tensorboard正在读取'./Graph'中的数据
summary_writer = tbc.get_writer()
tensorboardcolab库具有返回指向上面'./Graph'位置的FileWriter对象的方法.
您可以添加标量信息或图形或直方图数据.
参考: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 = 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)
以下是在 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)
Run Code Online (Sandbox Code Playgroud)
目前,您无法像在本地运行那样在 Google Colab 上运行 Tensorboard 服务。此外,您无法通过类似方式将整个日志导出到您的云端硬盘,summary_writer = tf.summary.FileWriter('./logs', graph_def=sess.graph_def)以便您可以下载并在本地查看。
| 归档时间: |
|
| 查看次数: |
31089 次 |
| 最近记录: |