gpt4 book ai didi

python - 如何为 Keras 显示 TensorBoard 的 CPU/内存使用情况(RunMetadata)

转载 作者:行者123 更新时间:2023-11-28 18:15:37 24 4
gpt4 key购买 nike

我想使用 Keras 查看 TensorBoard 中的 CPU/内存使用情况。为此,我需要执行add_run_metadata 的方法。但是我找不到在 Keras 的 TensorBoard 回调中传递 add_run_metadata 方法的方法。这是为 Keras 实现 CPU/内存使用的好方法吗。

引用


编辑:我遇到了同样的问题。我正在编辑以分享我是如何尝试解决这个问题的。

我更改了 keras 源代码:callbacks.py,并替换了这个 line in on_epoch_end()与 -

run_options = tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE)
run_metadata = tf.RunMetadata()
result = self.sess.run([self.merged], feed_dict=feed_dict, options=run_options, run_metadata=run_metadata)
self.writer.add_run_metadata(run_metadata, 'epoch%d_step%d' % (epoch, i))

但是我最终遇到了以下错误:

...\tensorflow\stream_executor\dso_loader.cc:141] Couldn't open CUDA library cupti64_90.dll
...\tensorflow/stream_executor/lib/statusor.h:212] Non-OK-status: status_ status: Failed precondition: could not dlopen DSO: cupti64_90.dll; dlerror: cupti64_90.dll not found

这让我感到困惑 seems to be related正确安装 cuda,并且与我所做的更改没有任何明显的(对我而言)相关。

我正在使用 keras 版本 2.1.6 和 tensorflow 版本 1.6.0

最佳答案

解决方案是在 TF session 中运行 Keras 模型,并且基于博文:keras-as-a-simplified-interface-to-tensorflow#calling-keras-layers-on-tensorflow-tensors .贝娄是一个详细的完整和最小的工作示例。

首先,虚拟生成数据:

数据.py

import numpy as np
def load_data(n = 1000):
x = np.random.rand(n, 100)
y = np.sum(x, axis=1, keepdims=True)
return x, y

核心思想是在TF session 中运行模型,所以主要代码是纯TF,只有模型本身是用Keras定义的。为此(按照上述教程):

  1. 模型需要构建在 tf.placeholder 之上,而不是 keras.layers.Input。
  2. 保持为张量,而不是编译成 keras.models.Model。

从 keras.layers 导入密集

模型.py

def load_network(input_tensor):    
x = Dense(100, activation='relu')(input_tensor)
x = Dense(100, activation='relu')(x)
x = Dense(1, activation='sigmoid')(x)
return x

以及运行 keras 模型的 TF session (一个干净但完整的 TensorBoard tutorial 版本):

run_runtime_stats.py

import tensorflow as tf
sess = tf.Session()
from keras import backend as K
from keras.objectives import mean_squared_error
K.set_session(sess)
from model import load_network
from data import load_data

# load your keras model as a tf.Tensor
input = tf.placeholder(tf.float32, shape=(None, 100)) # is passed as input to our keras layers
labels = tf.placeholder(tf.float32, shape=(None, 1))
net = load_network(input) # type(net) == tf.Tensor

loss = tf.reduce_mean(mean_squared_error(labels, net))
opt = tf.train.GradientDescentOptimizer(0.1).minimize(loss)

writer = tf.summary.FileWriter(r'./logs', sess.graph)

sess.run(tf.global_variables_initializer())
with sess.as_default():
x, y = load_data(64)

run_options = tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE)
run_metadata = tf.RunMetadata()

sess.run([opt],
feed_dict={input: x, labels: y},
options=run_options,
run_metadata=run_metadata)

writer.add_run_metadata(run_metadata, 'runtime-statistics')
writer.close()

关于python - 如何为 Keras 显示 TensorBoard 的 CPU/内存使用情况(RunMetadata),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48619774/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com