tensorflow的分析器中两个百分比数字的解释?

时间:2018-05-15 10:22:14

标签: tensorflow profiling

我正在使用tensorflow提供的the profiler tool。以下是分析结果的一个快照: enter image description here

我的问题:数据后两个百分比数字的含义是什么?

1 个答案:

答案 0 :(得分:2)

第一个数字是使用的总内存/在功能中花费的时间的百分比,而第二个数字是在分配/花费的功能中使用的内存百分比/花费的时间在内部函数中。通常这些被称为包容性(包括函数中的函数)和独占性(不包括函数中的函数)。

我会对时间进行解释,但它对内存分析的作用相同。

这是因为分析器只测量每个函数调用的时间。例如,如果你有:

def func1():
    # something
    func2()
    # something

def func2():
    # something

让我们假设func1()呼叫的探查者在func1花费了1000毫秒并且750ms花费在func2上,那么这些数字将是:

func1    100%    25%
func2     75%    

因为func1花费了100%的时间 - 但只有25%((1000毫秒 - 750毫秒)/ 1000毫秒)的时间用在func1 isn' t 花在func2上。同样,func2总共花费了75%(750毫秒/ 1000毫秒)。在此示例中,func2的第二个数字也将是75%,因为我没有包含任何代码,但如果内部还有其他函数,那么将应用相同的数学运算。所以不要混淆我没有把它包含在那里。

为了使它更有趣并包含另一个例子,假设你有:

def func1():
    # something
    func2()
    # something
    func3()
    # something

def func2():
    # something

def func3():
    # something

分析器在func1中测量为1000毫秒,在func2中测量为200毫秒,在func3中测量为500毫秒,该表将如下所示:

func1   100% (1000 / 1000)    30%  ((1000 - 200 - 500) / 1000)
func2    20% ( 200 / 1000)
func3    50% ( 500 / 1000)