'Constructor.
:param layers: string used to build the model.
This string is a comma-separate specification of the layers.
Supported values:
conv2d-FX-FY-Z-S: 2d convolution with Z feature maps as output
and FX x FY filters. S is the strides size
maxpool-X: max pooling on the previous layer. X is the size of
the max pooling
full-X: fully connected layer with X units
softmax: softmax layer
For example:
conv2d-5-5-32,maxpool-2,conv2d-5-5-64,maxpool-2,full-128,full-128,softmax
:param original_shape: original shape of the images in the dataset
:param dropout: Dropout parameter'

def __init__(self, layers, original_shape, name='convnet', loss_func='softmax_cross_entropy', num_epochs=10, batch_size=10, opt='sgd', learning_rate=0.01, momentum=0.5, dropout=0.5):

    assert (layers.split(',')[(-1)] == 'softmax')
    SupervisedModel.__init__(self, name)
    self.loss_func = loss_func
    self.learning_rate = learning_rate
    self.opt = opt
    self.num_epochs = num_epochs
    self.batch_size = batch_size
    self.momentum = momentum
    self.loss = Loss(self.loss_func)
    self.trainer = Trainer(opt, learning_rate=learning_rate, momentum=momentum)
    self.layers = layers
    self.original_shape = original_shape
    self.dropout = dropout
    self.W_vars = None
    self.B_vars = None
    self.accuracy = None
