human
Write me a the Python program you requested given the following:
3. ConvNet
assistant
#Here is the Python program you requested.
class ConvNet(nn.Module):
    def __init__(self, layers, c):    # c: num classes
        super().__init__()
        self.layers = nn.ModuleList([
            nn.Conv2d(layers[i], layers[i+1], kernel_size=3, stride=2)
            for  i in range(len(layers) - 1)
        ])
        self.pool = nn.AdaptiveMaxPool2d(1)  # define pooling layer to use in forward()
        self.out = nn.Linear(layers[-1], c)  # final FC/Lin layer
        
    def forward(self, x):
        for λ in self.layers: 
            x = F.relu(λ(x))  # same as λ_x=λ(x); x=F.relu(λ_x)
        x = self.pool(x)      # I guess only 1 Conv layer so only 1 Pool at end?
        x = x.view(x.size(0), -1)  # trsfm tensor for final Linlayer
        return F.log_softmax(self.out(x), dim=-1)

learner = ConvLearner.from_model_data(ConvNet([3, 20, 40, 80], 10), data)

learner.summary()