o
    ':j                     @   sB   d dl mZ d dlZd dlmZ ddlmZ G dd dejZdS )    )OrderedDictN   )ABNc                       s8   e Zd Zdedf fdd	Zedd Zdd Z  ZS )	DenseModule   r   c                    s   t t|   || _|| _|| _t | _t | _	t
| jD ]G}| jttd||fdtj|| j| dddfg | j	ttd|| j| fdtj| j| | jd|d|dfg || j7 }qd S )Nbnconvr   F)bias   )paddingr	   dilation)superr   __init__in_channelsgrowthlayersnn
ModuleListconvs1convs3rangeappend
Sequentialr   Conv2d)selfr   r   r   bottleneck_factornorm_actr   i	__class__ //home/ubuntu/htdocs/OOTD3/SCHP/modules/dense.pyr   
   s&   




zDenseModule.__init__c                 C   s   | j | j| j  S )N)r   r   r   )r   r    r    r!   out_channels   s   zDenseModule.out_channelsc                 C   sX   |g}t | jD ]}tj|dd}| j| |}| j| |}||g7 }qtj|ddS )Nr   )dim)r   r   torchcatr   r   )r   xinputsr   r    r    r!   forward"   s   zDenseModule.forward)	__name__
__module____qualname__r   r   propertyr"   r(   __classcell__r    r    r   r!   r   	   s
    
r   )	collectionsr   r$   torch.nnr   r   r   Moduler   r    r    r    r!   <module>   s
    