3 Nb| @sddlZddlmZmZddlZddljZddlmZddl m Z Gdddej Z ddd Z dd d ZdddZGdddej ZddZdS)N)TupleList)DepthWiseSeperableConv)MultidilatedConvc@s4eZdZejejeejeejfdddZ dS)BaseDiscriminator)xreturncCs tdS)z Predict scores and get intermediate activations. Useful for feature matching loss :return tuple (scores, list of intermediate activations) N)NotImplemented)selfrr E/home/ec2-user/SageMaker/lama/saicinpainting/training/modules/base.pyforward szBaseDiscriminator.forwardN) __name__ __module__ __qualname__abcabstractmethodtorchTensorrrr r r r r r srdefaultcCsFt|ts|S|dkrtjS|dkr(tS|dkr4tStd|dS)NrZ depthwiseZ multidilatedz!Unknown convolutional block kind ) isinstancestrnnConv2drr ValueError)kindr r r get_conv_block_ctors rbncCs<t|ts|S|dkrtjS|dkr*tjStd|dS)NrinzUnknown norm block kind )rrr BatchNorm2dInstanceNorm2dr)rr r r get_norm_layer!s r!tanhcCsB|dkrtjS|dkr tjS|dkr0tjStd|dS)Nr"sigmoidFzUnknown activation kind )rTanhSigmoidIdentityr)rr r r get_activation+sr'cs0eZdZeejdfdd ZddZZS)SimpleMultiStepGenerator)stepscstjtj||_dS)N)super__init__r ModuleListr))r r)) __class__r r r+6s z!SimpleMultiStepGenerator.__init__cCsT|}g}x2|jD](}||}|j|tj||fdd}qWtj|dddddS)N)dim)r)appendrcat)r rZcur_inoutsstepZcur_outr r r r :s  z SimpleMultiStepGenerator.forward) rrrrrModuler+r __classcell__r r )r-r r(5sr(cCs|dkrVtjt|||t|t||dddddd|t|t||d|gS|dkrtjdddtt|||t|t||ddddd|t|t||d|gStd |dS) NZ convtransposer.) kernel_sizestridepaddingoutput_paddingbilinear) scale_factormode)r9r:r;zInvalid deconv kind: )rConvTranspose2dminintUpsampler Exception)rngfmult norm_layer activation max_featuresr r r deconv_factoryCs   rJ)r)r)r")rtypingrrrtorch.nnrZ2saicinpainting.training.modules.depthwise_sep_convrZ1saicinpainting.training.modules.multidilated_convrr5rrr!r'r(rJr r r r s