U
    ­Ê¹j
  ã                   @   s„   d dl mZmZmZmZ d dlZd dlmZ ejddœdd„Zeje	ddœdd	„Z
ejeee	 eee	  f ee ed
œdd„ZdS )é    )ÚAnyÚListÚOptionalÚUnionN)Únn)ÚmoduleÚreturnc                 C   sj   i }|   ¡ D ]<\}}t|ƒ t|ƒtjks8t|ƒtjkrtjdd�||< q| ¡ D ]\}}|| j|< qRd S )NF©Zinplace)Znamed_childrenÚ_replace_reluÚtyper   ZReLUZReLU6ÚitemsZ_modules)r   ZreassignÚnameÚmodÚkeyÚvalue© r   úd/var/www/html/bwave/python/venv/lib/python3.8/site-packages/torchvision/models/quantization/utils.pyr
      s    r
   )ÚmodelÚbackendr   c                 C   sÂ   t  dddd¡}|t jjjkr&tdƒ‚|t jj_|  ¡  |dkrbt jj	j
t jj	jt jj	jd�| _n(|dkrŠt jj	j
t jj	jt jj	jd�| _|  ¡  t jj	j| dd	� | |ƒ t jj	j| dd	� d S )
Né   é   i+  z Quantized backend not supported Zfbgemm)Z
activationÚweightZqnnpackTr	   )ÚtorchZrandÚbackendsZ	quantizedZsupported_enginesÚRuntimeErrorZengineÚevalÚaoÚquantizationZQConfigZdefault_observerZ#default_per_channel_weight_observerZqconfigZdefault_weight_observerZ
fuse_modelÚprepareÚconvert)r   r   Z_dummy_input_datar   r   r   Úquantize_model   s&    
þ
 ÿr    )r   Úmodules_to_fuseÚis_qatÚkwargsc                 K   s4   |d kr| j }|rtjjjntjjj}|| |f|ŽS )N)Ztrainingr   r   r   Zfuse_modules_qatZfuse_modules)r   r!   r"   r#   Úmethodr   r   r   Ú_fuse_modules-   s    r%   )Útypingr   r   r   r   r   r   ÚModuler
   Ústrr    Úboolr%   r   r   r   r   Ú<module>   s      ÿ