张量流中的触发器:矩阵乘法

时间:2018-05-10 19:11:03

标签: python tensorflow

受此question的启发,我试图测量矩阵矩阵乘法的tensorflow所需的FLOPS。

对于分别具有大小(m×p)和(p×n)的两个矩阵A和B,得到的矩阵C =具有大小(m×n)的AB具有mn个条目。对于每个条目,需要p乘法和(p-1)求和。因此,操作总数为mn(2p-1)

使用链接的问题/答案中的代码,tensorflow输出m*n*2p,请参阅下面的代码。

为什么返回这个近似值而不是理论值?在最坏的情况下,p = 1,这个近似值比正确值大2倍。

import numpy as np
import tensorflow as tf
g = tf.Graph()
run_meta = tf.RunMetadata()
with g.as_default():
    A=tf.convert_to_tensor(np.random.rand(13,9))
    B=tf.convert_to_tensor(np.random.rand(9,7))
    C = tf.matmul(A,B) # shape=[13,7]

    opts = tf.profiler.ProfileOptionBuilder.float_operation()    
    flops = tf.profiler.profile(g, run_meta=run_meta, cmd='op', options
=opts)
    if flops is not None:
        print('Flops should be ', 13*7*(2*9-1))
        print('Approximation 2*13*7*9=',2*13*7*9) 
        print('TF stats gives',flops.total_float_ops)

#Output: 
#Flops should be  1547
#Approximation 2*13*7*9= 1638
#TF stats gives 1638

0 个答案:

没有答案