업데이트, 할당을 조회 할 수 TensorFlow 작전을 사용할 수 있습니다. 다음은이
run_metadata = tf.RunMetadata()
sess.run(c, options=tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE, output_partition_graphs=True), run_metadata=run_metadata)
같은 IE 뭔가 엔드 - 투 - 엔드 예제 - 열 벡터, 행 벡터를 가지고 추가의 매트릭스 얻기 위해 추가 : 당신을 run.txt
를 열면
import tensorflow as tf
no_opt = tf.OptimizerOptions(opt_level=tf.OptimizerOptions.L0,
do_common_subexpression_elimination=False,
do_function_inlining=False,
do_constant_folding=False)
config = tf.ConfigProto(graph_options=tf.GraphOptions(optimizer_options=no_opt),
log_device_placement=True, allow_soft_placement=False,
device_count={"CPU": 3},
inter_op_parallelism_threads=3,
intra_op_parallelism_threads=1)
sess = tf.Session(config=config)
with tf.device("cpu:0"):
a = tf.ones((13, 1))
with tf.device("cpu:1"):
b = tf.ones((1, 13))
with tf.device("cpu:2"):
c = a+b
sess = tf.Session(config=config)
run_metadata = tf.RunMetadata()
sess.run(c, options=tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE, output_partition_graphs=True), run_metadata=run_metadata)
with open("/tmp/run2.txt", "w") as out:
out.write(str(run_metadata))
를 ' 당신이 a
및 b
은 52 바이트 각 (13 * 4) 할당 된 것을 볼 수 있습니다 그래서 여기
node_name: "ones"
allocation_description {
requested_bytes: 52
allocator_name: "cpu"
ptr: 4322108320
}
....
node_name: "ones_1"
allocation_description {
requested_bytes: 52
allocator_name: "cpu"
ptr: 4322092992
}
...
node_name: "add"
allocation_description {
requested_bytes: 676
allocator_name: "cpu"
ptr: 4492163840
을, 그 결과는 676 바이트를 할당 : LL이 같은 메시지를 참조하십시오.
전체 장치 할당을 캡처하는 편리한 방법이 있습니까? 이 말은 내 장치의 여유 메모리 중 어떤 부분이 할당되었는지를 의미합니다. –
내가 아는 것은 아닙니다. 난 그냥 모든 할당 메시지를 추가하고 상세 로그에서 할당 취소 메시지를 뺀. 사용 사례가 –
BTW이고, C++ API에 [이 호출] (https://github.com/tensorflow/tensorflow/blob/64edd34ce69b4a8033af5d217cb8894105297d8a/tensorflow/core/kernels/stack_ops.cc#)이 있으면 좋은 기능 요청 일 수 있습니다. L223). 할당 된 전체 메모리를 볼 수 있습니다. 그것은 파이썬에서 접근 할 수 있도록 포장되어 있지 않은 것 같습니다. 그것은 좋은 기능 추가가 될 것입니다. –