
    DPhD                         d dl Z d dlZd dlZd Zd Zd Zd Zddededed	e	d
e
f
dZd Zd Zd Zde j                  fdZd Zd Zd ZdefdZd Zd Zd Zd Zd Zd Zy)    Nc                 "    d}| D ]  }||z  }	 |S N    in_listres_s      `C:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\thop/vision/calc_func.pyl_prodr          
Cq J    c                 "    d}| D ]  }||z  }	 |S Nr   r   r   s      r   l_sumr      r   r   c                 f    d}| D ])  }|t        j                  |j                         g      z  }+ |S r   )torchDoubleTensornelement)
param_listtotal_paramsps      r   calculate_parametersr      s4    L**AJJL>:: r   c                  @    t        j                  t        d      g      S r   r   r   intr   r   r   calculate_zero_opsr      s    s1vh''r   
input_sizeoutput_sizekernel_sizegroupsbiasc                 P    | d   }|}t        |      ||z  z  t        |dd        z  S )Nr      )r   )r   r   r    r!   r"   in_cgs          r   calculate_conv2d_flopsr'      s6     a=DA+$!),vk!"o/FFFr   c                 r    t        j                  d       	 t        j                  |||z  |z  | z   z  g      S )NzThis API is being deprecated.)warningswarnr   r   )r"   r    r   
in_channelgroups        r   calculate_convr-   %   s;    MM12!{j5.@;.NQU.UVWXXr   c                 4    t        j                  d| z  g      S )z'input is a number not a array or tensorr$   )r   r   r   s    r   calculate_normr0   +   s    q:~.//r   c                      yr   r   r/   s    r   calculate_relu_flopsr2   /   s    r   c                 j    t        j                  d       t        j                  t	        |       g      S )NzThis API is being deprecated)r)   r*   r   r   r   r/   s    r   calculate_relur4   4   s'    MM01s:/00r   c                 h    |}|dz
  }|}| ||z   |z   z  }t        j                  t        |      g      S r   r   )
batch_size	nfeatures	total_exp	total_add	total_div	total_opss         r   calculate_softmaxr<   9   sA    IAIIi)3i?@Is9~.//r   c                 @    t        j                  t        |       g      S Nr   r/   s    r   calculate_avgpoolr?   A   s    s:/00r   c                 T    d}| |z   }t        j                  t        ||z        g      S r   r   )r    r   r:   	kernel_ops       r   calculate_adaptive_avgrB   E   s/    Ii'Is9{#:;<==r   modec                     |}| dk(  r|dz  }n'| dk(  r|dz  }n| dk(  rd}d}|||z   z  }n
| dk(  r|d	z  }t        j                  t        |      g      S )
Nlinear   bilinear   bicubic   #   	trilinear   r   )rC   r   r;   ops_solve_Aops_solve_ps        r   calculate_upsamplerP   K   st    IxQ			R			[;..			Z	s9~.//r   c                 F    t        j                  t        | |z        g      S r>   r   )
in_featurenum_elementss     r   calculate_linearrT   Z   s     s:#<=>??r   c                     t        j                  |       } t        j                  |      }t        j                  |       |d   z  S )N)nparrayprod)r   r   s     r   counter_matmulrZ   ^   s6    *%J((;'K77:R00r   c                     | S r>   r   r/   s    r   counter_mulr\   d       r   c                     | S r>   r   r/   s    r   counter_powr_   h   r]   r   c                     | S r>   r   r/   s    r   counter_sqrtra   l   r]   r   c                     | S r>   r   r/   s    r   counter_divrc   p   r]   r   )F)r   numpyrW   r)   r   r   r   r   listr   boolr'   r-   r0   r2   Tensorr4   r<   r?   rB   strrP   rT   rZ   r\   r_   ra   rc   r   r   r   <module>ri      s      (Gt G$ GT G[^ Gfj GY0
1u|| 1
01>0S 0@1r   