U
    d                     @   s,   d dl mZ d dlmZ G dd deZdS )    )schema)
ModelLayerc                       s&   e Zd Zd fdd	Zdd Z  ZS )	Split   splitNc                    sV  t tj|||f| |_|d8 }|dks2tt|tjsLtd||	 j
}t||ksft|d kr|| | dkstnt|}|| t|kst|d krt|t| | |< n0g t|D ]"}	t|}
||	 |
|< |
 q|	 j |d kr& fddt|D }n fddt|D }tj| _|_d S )Nr   r   z8Incorrect input type. Expected Scalar, but received: {0}c              
      s(   g | ] }t  fd |qS z	output_{}r   ScalarZget_next_blob_referenceformat.0iZ	data_typeZoutput_shapeself >/tmp/pip-unpacked-wheel-ua33x9lu/caffe2/python/layers/split.py
<listcomp>3   s
   z"Split.__init__.<locals>.<listcomp>c              
      s,   g | ]$}t  | fd |qS r   r   r   r   r   r   r   ;   s
   
)superr   __init__axisAssertionError
isinstancer   r	   r
   Z
field_typeshapelensumlistintrangeappendbaseTupleoutput_schemar   )r   modelinput_recordZ
num_splitsr   namer   kwargsZinput_shaper   Zoutput_shape_iZoutput_scalars	__class__r   r   r      sB    


zSplit.__init__c                 C   s&   |j | j | j | j| jd d S )N)r   r   )r   r#   Zfield_blobsr!   r   r   )r   netr   r   r   add_opsE   s    zSplit.add_ops)r   r   r   N)__name__
__module____qualname__r   r)   __classcell__r   r   r&   r   r      s
       5r   N)Zcaffe2.pythonr   Zcaffe2.python.layers.layersr   r   r   r   r   r   <module>   s   