o ;QgT@s2ddlZddlZddlmZGdddejZdS)Ncs<eZdZfddZddZeddZeddZZS) SpatialPoolcst|j|_|j|_t|d|j|_|jdkr&t j |j|jd|_ dS|jdkr7t j |j|jd|_ dS|jdkrLt j |j|j|j|jd|_ dStd|j d) Nmm_spatial_pool_out_channelsaverage) kernel_sizestridemaxconv) in_channels out_channelsrrzUnknown pooling mode: .)super__init__mm_spatial_pool_modemodemm_spatial_pool_stridergetattr hidden_sizer nn AvgPool2dpool MaxPool2dConv2d ValueError)self model_args vision_tower __class__O/mnt/sfs-common/jkyang/EgoGPT/egogpt/model/multimodal_resampler/spatial_pool.pyr s$     zSpatialPool.__init__c Ostt|jd|jd|jd}t||jd|jd}|j\}}} ||||| dddd} || } | ddd S)Nr) intmathsqrtshapeviewpermuterflatten transpose contiguous) rimage_featuresimagesargskwargsZori_WZori_HB_FZimage_features_spatialZimage_features_spatial_poolrrrforwards"  zSpatialPool.forwardcCsd|j|j|jdS)N spatial_pool)mm_resampler_typerrr)rrr rrrrconfig.s zSpatialPool.configcCs|jS)N)r r6rrrr7szSpatialPool.hidden_size) __name__ __module__ __qualname__r r3propertyr7r __classcell__rrrrrs  r)r$torchtorch.nnrModulerrrrrs