U
    dt                     @   s4   d dl mZ d dlmZ d dlZG dd deZdS )    )schema)
ModelLayerNc                       s&   e Zd Zd fdd	Zdd Z  ZS )AddBiasNadd_biasc                    s   t t| ||| t|tjs(tdt| j	dksBtd| j	d }|dksftd
|td| }|r||nd| |df}| jd|g||d	| _t| j|ff| d
| _d S )NzIncorrect input typer   z6AddBias expects limited dimensions of the input tensorz,AddBias expects input dimensions > 0, got {}g      ?ZUniformFill)minmaxb)
param_nameshapeZinitializerZ	optimizeroutput)superr   __init__
isinstancer   ZScalarAssertionErrorlenZ
field_typer
   formatmathsqrtZcreate_paramr   baseZget_next_blob_referenceoutput_schema)selfmodelinput_recordZ	bias_initZ
bias_optimnameZ
input_dimsZscale	__class__ A/tmp/pip-unpacked-wheel-ua33x9lu/caffe2/python/layers/add_bias.pyr      s0    
 
zAddBias.__init__c                 C   s(   |j | j | jg | j dd d S )N   )	broadcast)ZAddr   Zfield_blobsr   r   )r   netr   r   r   add_ops*   s     zAddBias.add_ops)NNr   )__name__
__module____qualname__r   r!   __classcell__r   r   r   r   r      s
       r   )Zcaffe2.pythonr   Zcaffe2.python.layers.layersr   r   r   r   r   r   r   <module>   s   