a
    ==ic                     @   sp   d dl mZmZmZmZ d dlmZ d dlm  m	Z	 d dl
Zd dlZeeZeej G dd deZdS )    )coreschemascope	workspace)
ModelLayerNc                       s&   e Zd Zd fdd	Zdd Z  ZS )
Functional
functionalNc              
      sr  t |}tt| j|||fd|i| || _|| _t|tpPt|t	oP|dk}	t
j| jdd t|t	rt |jt |}
n\t|t jr|jdd| _W d    d S t|ts|g}dd |D }t |jt j| }
W d    n1 s0    Y  t|
 }|	r|
| _n
|
d | _|d ur~t|tsB|g| }t||ksTJ t|| j D ]\}}|| qdd S d	}ztd
}t j||dd ||| j| jfi | t|gi \}}t|D ]D}|	r| j| n| j}| }||vs||vrd}q|| g kr&t  }nD|| d dkrNt || dd  }nt!"d#||  d}qd }|| t$j%j&krt'j(|f}nv|| t$j%j)krt'j*|f}nX|| t$j%j+krt'j,|f}n:|| t$j%j-krt'j.|f}n|| t$j%j/krt'j0|f}|d ur|| qW n8 t1yT } zd}t!"t2| W Y d }~n
d }~0 0 |rnt!"d#| j d S )Ntags   T)reset)Z
keep_blobsc                 S   s   g | ]}|t jfqS  )npvoid).0outr   r   p/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/caffe2/python/layers/functional.py
<listcomp>/       z'Functional.__init__.<locals>.<listcomp>r   FZ"_temp_type_and_shape_inference_net)Zenforce_typeszunexpected shape: {}z)Type inference had problems for layer: {})3r   Z	as_recordsuperr   __init__	_function_kwargs
isinstancelistintr   Z	NameScopenameZ	NewRecordnetZRawTupleFieldcloneoutput_schemaStructlenZfield_blobszipZall_scalarsset_typer   ZNetZInitEmptyRecordinput_recordr   ZInferShapesAndTypesrangetupleloggerwarningformat
caffe2_pb2ZTensorProtoDOUBLEr   float64FLOATfloat32ZINT32int32ZINT64int64ZFLOAT16float16	TypeErrorstr)selfmodelr$   Zoutput_names_or_numfunctionr   Zoutput_dtypesr	   kwargsZreturn_structZstruct_output_schemaZ	out_tupleZnum_outputsZdtypeZscalarZ
had_issuesZtype_netZshapestypesiZscalar_schemaZblobshapeex	__class__r   r   r      s    
 



"





$
zFunctional.__init__c                 C   s    | j || j| jfi | j d S )N)r   r$   r   r   )r4   r   r   r   r   add_opsy   s
    
zFunctional.add_ops)r   NN)__name__
__module____qualname__r   r>   __classcell__r   r   r<   r   r      s    cr   )Zcaffe2.pythonr   r   r   r   Zcaffe2.python.layers.layersr   Zcaffe2.proto.caffe2_pb2protor*   numpyr   logging	getLoggerr?   r'   setLevelINFOr   r   r   r   r   <module>   s   
