chennel wise conv와 depth wise conv를 반복하며 feature를 학습한다.
patch embedding 을 통해서 각 가로 세로로 이루어진 패치들을 embedding 시켜준 후 반복한다.
내 경우 3d 데이터라서 conv 3d로 대체하여 convmixer를 사용하였다.
def ConvMixer(dim, depth, kernel_size = 5):
return nn.Sequential(
*[nn.Sequential(
nn.Conv3d(dim, dim, kernel_size, groups=dim, padding=1),
nn.GELU(),
nn.BatchNorm3d(dim),
nn.Conv3d(dim, dim, 1),
nn.GELU(),
nn.BatchNorm3d(dim)) for i in range(depth)],
# nn.AdaptiveAvgPool3d()
)