3
Eg3 @ s4 d dl Zd dlmZmZmZmZ G dd deZdS ) N)brewcoremodel_helper recurrentc @ sd e Zd ZdddZdddZdddZdd Zdd
dZdd
Zdd Z e
dd Ze
dd ZdS )CRFWithLossNc C s\ || _ || _|d | _|sB| j jjg tjdg| j| jgddd}|| _| j jj | j d S )N Zcrf_transitionsg ?)shapeminmaxg )
modelnum_classesnum_classes_paddedparam_init_netZUniformFillr ScopedBlobReferencetransitionsparamsappend)selfr r Ztransitions_blob r =/usr/local/lib64/python3.6/site-packages/caffe2/python/crf.py__init__ s
zCRFWithLoss.__init__c C s4 | j jj| jtjd}| j||| j}tj || j j
| j j| j}tj|| j j
| j j| j}| j|||}| j jj
||gtjd}| j j
jg dgdd}| j jj||gtjddd} | j jj|gddd d
\}
}| j jj|
gtjddgd}
| j jj|tjd
}| j|
| |}
| j jj|
|gtjd}|S )Ntransitions_snapshotZ
path_total r )r valueZrnn_initialT)dense_gradientr )
padding_widthend_padding_widthoutputsZrnn_input_data)dimstransitions_copycrf_loss)r netZCopyr r r _gather_entries_sumr r pad_predictionsr
pad_labels_path_binary_scoresAddConstantFillGather
RemovePadding
ExpandDims_crf_forwardSub)r predictionslabelsseq_lengthsr Zpath_unary_scoreZpath_binary_scoreZpath_total_score
zero_index
initial_stateZ
input_data_r Zall_paths_scoresZlossr r r r s:
zCRFWithLoss.crf_lossc C s | j jj|gdddd\}}| j jj|gdddd\}}| j jj|g| jd}| j jj||g}| j jj||g}| j jj|g} | j jj| |gdd}
| j j |
S )Nr r r )r r r )r T)r )
r r! r) r' r
ZMulr&