a
    ==ic  ã                   @   s<   d dl mZ d dlmZ d dlmZmZ G dd„ deƒZdS )é    )Úcore)Ú
caffe2_pb2)Ú
BackendRepÚnamedtupledictc                       s4   e Zd Z‡ fdd„Zedd„ ƒZ‡ fdd„Z‡  ZS )Ú	Caffe2Repc                    s6   t t| ƒ ¡  || _|| _|| _|| _d| _d| _d S )NF)	Úsuperr   Ú__init__Úinit_netÚpredict_netÚ	workspaceÚuninitializedÚnets_createdÚran_init_net)Úselfr	   r
   r   r   ©Ú	__class__© úo/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/caffe2/python/onnx/backend_rep.pyr      s    zCaffe2Rep.__init__c                 C   s$   | j jjtjkr d | j jj¡S dS )Nzgpu_{}Ú )r
   Údevice_optionZdevice_typer   ÚCUDAÚformatZ	device_id)r   r   r   r   Ú_name_scope   s    zCaffe2Rep._name_scopec              	      sä  t t| ƒj|fi |¤Ž t | jj¡F t|tƒr‚t 	| j
¡0 | ¡ D ]\}}| j ||¡ qJW d   ƒ n1 sv0    Y  n†t|tƒs–t|tƒrôt| jƒt|ƒkrÌtd t| jƒd | j¡t|ƒ¡ƒ‚t|ƒD ]\}}| j | j| |¡ qÔn| j | jd |¡ | js2| j | j¡ | j | j¡ d| _| jsP| j | jj¡ d| _| j | jj¡ W d   ƒ n1 sv0    Y  g }| jjD ]D}z| | j |¡¡ W n& tyÌ   | | j  |¡¡ Y n0 qŒt!d| jjƒ|Ž S )NzCExpected {} values for uninitialized graph inputs ({}), but got {}.z, r   TZOutputs)"r   r   Úrunr   ZDeviceScoper
   r   Ú
isinstanceÚdictZ	NameScoper   Úitemsr   ZFeedBlobÚlistÚtupleÚlenr   ÚRuntimeErrorr   ÚjoinÚ	enumerater   Z	CreateNetr	   r   ZRunNetÚnameZexternal_outputÚappendZ	FetchBlobÚ	ExceptionZFetchInt8Blobr   )r   ÚinputsÚkwargsÚkeyÚvalueÚiZoutput_valuesr#   r   r   r   r      sF    
0
ü0ÿÿzCaffe2Rep.run)Ú__name__Ú
__module__Ú__qualname__r   Úpropertyr   r   Ú__classcell__r   r   r   r   r      s   
r   N)Zcaffe2.pythonr   Zcaffe2.protor   Zonnx.backend.baser   r   r   r   r   r   r   Ú<module>   s   