nn.Conv2d(3, 32, kernel_size=(3, 3), bias=False),
nn.BatchNorm2d(32),
nn.ReLU(),
nn.Conv2d(32, 32, kernel_size=(3, 3)),
nn.BatchNorm2d(32),
nn.Dropout(0.2),
nn.ReLU(),
nn.MaxPool2d(2, 2),
nn.Conv2d(32, 64, kernel_size=(3, 3)),
nn.BatchNorm2d(64),
nn.ReLU(),
nn.Conv2d(64, 64, kernel_size=(3, 3)),
nn.BatchNorm2d(64),
nn.Dropout(0.3),
nn.ReLU(),
nn.MaxPool2d(2, 2),
nn.Conv2d(64, 128, kernel_size=(3, 3)),
nn.ReLU(),
nn.Conv2d(128, 128, kernel_size=(3, 3)),
nn.BatchNorm2d(128),
nn.Dropout(0.3),
nn.ReLU(),
nn.MaxPool2d(2, 2),
nn.Conv2d(128, 256, kernel_size=(3, 3)),
nn.ReLU(),
nn.Conv2d(256, 256, kernel_size=(3, 3)),
nn.BatchNorm2d(256),
nn.ReLU(),
nn.MaxPool2d(2, 2),
nn.Flatten(),
nn.Linear(6400, 64),
nn.ReLU(),
nn.Dropout(0.2),
nn.Linear(64, 32),
nn.ReLU(),
nn.Linear(32, 4),
nn.Softmax())