@ -52,21 +52,29 @@ struct OpInfo {
}
const proto : : OpProto & Proto ( ) const {
PADDLE_ENFORCE_NOT_NULL ( proto_ , " Operator Proto has not been registered" ) ;
PADDLE_ENFORCE_NOT_NULL ( proto_ , " Operator 's Proto has not been registered" ) ;
PADDLE_ENFORCE ( proto_ - > IsInitialized ( ) ,
" Operator Proto must be initialized in op info" ) ;
" Operator 's Proto must be initialized in op info" ) ;
return * proto_ ;
}
const OpCreator & Creator ( ) const {
PADDLE_ENFORCE_NOT_NULL ( creator_ ,
" Operator Creator has not been registered" ) ;
" Operator 's Creator has not been registered" ) ;
return creator_ ;
}
const GradOpMakerFN & GradOpMaker ( ) const {
PADDLE_ENFORCE_NOT_NULL ( grad_op_maker_ ,
" Operator GradOpMaker has not been registered. " ) ;
// Normally, proto_ should not be null, except some special operators, such
// as LeaklyReluDoubleGrad op.
std : : string type = proto_ ? proto_ - > type ( ) : " unknown " ;
PADDLE_ENFORCE_NOT_NULL (
grad_op_maker_ ,
" Operator %s's GradOpMaker has not been "
" registered. \n Please check whether %s_op has "
" grad_op. \n If not, please set stop_gradient to True "
" for its input and output variables using var.stop_gradient=True. " ,
type . c_str ( ) , type . c_str ( ) ) ;
return grad_op_maker_ ;
}