U PhU@s8ddlmZddlmZmZdgZGdddedZdS)) annotations)ABCMetaabstractmethod BaseEncoderc@sheZdZdZeeddddZeeddddZeed dd d Zeed dd dZ dS)ra Abstract class defines interface of encoders in flexible unet. Encoders in flexible unet must derive from this class. Each interface method should return a list containing relative information about a series of networks defined by encoder. For example, the efficient-net encoder implement 10 basic network structures in one encoder. When calling `get_encoder_name_string_list` function, a string list like ["efficientnet-b0", "efficientnet-b1" ... "efficientnet-l2"] should be returned. z list[dict])returncCstdS)a Get parameter list to initialize encoder networks. Each parameter dict must have `spatial_dims`, `in_channels` and `pretrained` parameters. The reason that this function should return a list is that a series of encoders can be implemented by one encoder class given different initialization parameters. Each parameter dict in return list should be able to initialize a unique encoder. NNotImplementedErrorclsr R/home/dell461/cl/sdc2/HISourceFinder-master-l/src/monai/networks/blocks/encoder.pyget_encoder_parameterss z"BaseEncoder.get_encoder_parameterszlist[tuple[int, ...]]cCstdS)a Get number of output features' channels. The reason that this function should return a list is that a series of encoders can be implemented by one encoder class given different initialization parameters. And it is possible that different encoders have different output feature map channels. Therefore a list of output feature map channel tuples corresponding to each encoder should be returned by this method. Nrr r r r num_channels_per_output,s z#BaseEncoder.num_channels_per_outputz list[int]cCstdS)a Get number of outputs of encoder. The reason that this function should return a list is that a series of encoders can be implemented by one encoder class given different initialization parameters. And it is possible that different encoders have different output feature numbers. Therefore a list of output feature numbers corresponding to each encoder should be returned by this method. Nrr r r r num_outputs:s zBaseEncoder.num_outputsz list[str]cCstdS)a Get the name string of encoders which will be used to initialize flexible unet. The reason that this function should return a list is that a series of encoders can be implemented by one encoder class given different initialization parameters. And a name string is the key to each encoder in flexible unet backbone registry. Therefore this method should return every encoder name that needs to be registered in flexible unet. Nrr r r r get_encoder_namesHs zBaseEncoder.get_encoder_namesN) __name__ __module__ __qualname____doc__ classmethodrr rrrr r r r rs    ) metaclassN) __future__rabcrr__all__rr r r r  s