Could this neural network be a good classifier?

I wonder if there is any silly mistake or anything you recommend to be changed, I’m trying to avoid fully connected layers. And the network needs to output an array of 4 numbers (predicts a class.)

import torch
from torch import nn


class Backbone(nn.Module):
    """
    Backbone (first part) of the spot rotated neural network
    It is just a set of convolutions.
    Important: The Head expects a flattened tensor.
    Args: None
    """

    def __init__(self):
        super().__init__()
        self.conv1 = nn.Conv2d(3, 16, kernel_size=2, stride=1, padding=2)
        self.conv2 = nn.Conv2d(16, 32, kernel_size=2, stride=1, padding=2)
        self.conv3 = nn.Conv2d(32, 64, kernel_size=2, stride=1, padding=2)
        self.conv4 = nn.Conv2d(64, 128, kernel_size=2, stride=1, padding=2)
        self.conv5 = nn.Conv2d(128, 256, kernel_size=2, stride=1, padding=2)
        self.conv6 = nn.Conv2d(256, 512, kernel_size=2, stride=1, padding=2)
        self.relu1 = nn.ReLU()
        self.dropout1 = nn.Dropout(0.3)
        self.maxpool = nn.MaxPool2d(kernel_size=(3, 3))

    def forward(self, x: torch.Tensor) -> torch.Tensor:
        x = self.conv1(x)
        x = self.relu1(x)
        x = self.maxpool(x)
        x = self.conv2(x)
        x = self.relu1(x)
        x = self.maxpool(x)
        x = self.conv3(x)
        x = self.relu1(x)
        x = self.maxpool(x)
        x = self.conv4(x)
        x = self.relu1(x)
        x = self.maxpool(x)
        x = self.conv5(x)
        x = self.relu1(x)
        x = self.maxpool(x)
        x = self.conv6(x)
        x = self.relu1(x)
        x = self.maxpool(x)
        return x
class HeadV2(nn.Module):
    """
    Classification of the image rotation angle.
    Args:
        input_size: the size of the input image
    """

    def __init__(self):
        super().__init__()
        self.gap = nn.AdaptiveAvgPool2d((1, 1))
        self.fc2 = nn.Linear(512, 4)

    def forward(self, x: torch.Tensor) -> torch.Tensor:
        x = self.gap(x)
        x = x.view(x.size(0), -1)
        x = self.fc2(x)
        return x


class ClassifierV2(nn.Module):
    """
    A PyTorch neural network for image classification.

    Args:
        channels: Number of channels in the input image.
        height: Height of the input image in pixels.
        width: Width of the input image in pixels.
    """

    def __init__(self):
        super().__init__()
        self.backbone = Backbone()
        self.head = HeadV2()

    def forward(self, x):
        x = self.backbone(x)
        x = self.head(x)
        return x