import torch
import torch.nn as nn


class ImageNetHEAD(nn.Sequential):
  def __init__(self, C, stride=2):
    super(ImageNetHEAD, self).__init__()
    self.add_module('conv1', nn.Conv2d(3, C // 2, kernel_size=3, stride=2, padding=1, bias=False))
    self.add_module('bn1'  , nn.BatchNorm2d(C // 2))
    self.add_module('relu1', nn.ReLU(inplace=True))
    self.add_module('conv2', nn.Conv2d(C // 2, C, kernel_size=3, stride=stride, padding=1, bias=False))
    self.add_module('bn2'  , nn.BatchNorm2d(C))


class CifarHEAD(nn.Sequential):
  def __init__(self, C):
    super(CifarHEAD, self).__init__()
    self.add_module('conv', nn.Conv2d(3, C, kernel_size=3, padding=1, bias=False))
    self.add_module('bn', nn.BatchNorm2d(C))