TensorFlow:成本图在 RunMetadata 中为空
TensorFlow: Cost graph is empty in RunMetadata
我按照 this answer 从 TensorFlow 获取成本模型估计。但是,当我打印结果 metadata.cost_graph
时,输出为空。我还需要做什么吗?
我想查看 TensorFlow 成本模型的成本估算以及它如何映射到设备。我还有其他方法可以做到这一点吗?
完整程序如下:
import tensorflow as tf
import datetime
import numpy as np
# Create random large matrix
A = np.random.rand(10000, 10000).astype('float32')
B = np.random.rand(10000, 10000).astype('float32')
with tf.device('/gpu:0'):
a = tf.placeholder(tf.float32, [10000, 10000])
b = tf.placeholder(tf.float32, [10000, 10000])
with tf.device('gpu:0'):
mul = tf.matmul(a, b)
metadata = tf.RunMetadata()
run_options = tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE)
ops = tf.GraphOptions(build_cost_model=5)
with tf.Session(config=tf.ConfigProto(log_device_placement=True,
graph_options=ops)) as sess:
# Run the op.
for _ in xrange(20):
sess.run([mul], feed_dict={a:A, b:B}, options=run_options,
run_metadata=metadata)
print ("Cost graph " + str(metadata.cost_graph))
tf.GraphOptions.build_cost_model
选项是 defined 作为在生成成本模型之前 运行 的步骤数。来自定义:
// The number of steps to run before returning a cost model detailing
// the memory usage and performance of each node of the graph. 0 means
// no cost model.
int64 build_cost_model = 4;
因此,要查看成本模型,您必须 运行 使用 build_cost_model=50
该图 50 次。为了获得更好的性能,我建议仅在第 50 次调用时传递 run_options
(否则 TensorFlow 将产生并丢弃大量元数据)。
我按照 this answer 从 TensorFlow 获取成本模型估计。但是,当我打印结果 metadata.cost_graph
时,输出为空。我还需要做什么吗?
我想查看 TensorFlow 成本模型的成本估算以及它如何映射到设备。我还有其他方法可以做到这一点吗?
完整程序如下:
import tensorflow as tf
import datetime
import numpy as np
# Create random large matrix
A = np.random.rand(10000, 10000).astype('float32')
B = np.random.rand(10000, 10000).astype('float32')
with tf.device('/gpu:0'):
a = tf.placeholder(tf.float32, [10000, 10000])
b = tf.placeholder(tf.float32, [10000, 10000])
with tf.device('gpu:0'):
mul = tf.matmul(a, b)
metadata = tf.RunMetadata()
run_options = tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE)
ops = tf.GraphOptions(build_cost_model=5)
with tf.Session(config=tf.ConfigProto(log_device_placement=True,
graph_options=ops)) as sess:
# Run the op.
for _ in xrange(20):
sess.run([mul], feed_dict={a:A, b:B}, options=run_options,
run_metadata=metadata)
print ("Cost graph " + str(metadata.cost_graph))
tf.GraphOptions.build_cost_model
选项是 defined 作为在生成成本模型之前 运行 的步骤数。来自定义:
// The number of steps to run before returning a cost model detailing
// the memory usage and performance of each node of the graph. 0 means
// no cost model.
int64 build_cost_model = 4;
因此,要查看成本模型,您必须 运行 使用 build_cost_model=50
该图 50 次。为了获得更好的性能,我建议仅在第 50 次调用时传递 run_options
(否则 TensorFlow 将产生并丢弃大量元数据)。