o
    ,h                     @   s   d dl mZmZmZ d dlZd dlmZ dejddfddZdejd	eddfd
dZ	dejdee
e e
e
e  f dee defddZdS )    )AnyOptionalUnionN)nnmodulereturnc                 C   sj   i }|   D ]\}}t| t|tju st|tju r$tjdd||< q| D ]	\}}|| j|< q)d S )NFinplace)named_children_replace_relutyper   ReLUReLU6items_modules)r   reassignnamemodkeyvalue r   `/var/www/html/scripts/venv/lib/python3.10/site-packages/torchvision/models/quantization/utils.pyr      s   r   modelbackendc                 C   s   t dddd}|t jjjvrtd|t jj_|   |dkr1t jj	j
t jj	jt jj	jd| _n|dkrEt 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 fbgemm)
activationweightqnnpackTr   )torchrandbackends	quantizedsupported_enginesRuntimeErrorengineevalaoquantizationQConfigdefault_observer#default_per_channel_weight_observerqconfigdefault_weight_observer
fuse_modelprepareconvert)r   r   _dummy_input_datar   r   r   quantize_model   s$   

r3   modules_to_fuseis_qatkwargsc                 K   s8   |d u r| j }|rtjjjntjjj}|| |fi |S )N)trainingr    r(   r)   fuse_modules_qatfuse_modules)r   r4   r5   r6   methodr   r   r   _fuse_modules-   s   r;   )typingr   r   r   r    r   Moduler   strr3   listboolr;   r   r   r   r   <module>   s    