Exemplo n.º 1
0
 def __init__(self):
     super(ConvolutionNet, self).__init__()
     # Define symbols that using convolution and max pooling to extract better features
     # from input image.
     net = mx.sym.Variable(name='X')
     net = mx.sym.Convolution(data=net,
                              name='conv',
                              kernel=(7, 7),
                              num_filter=32)
     net = mx.sym.Activation(data=net, act_type='relu')
     net = mx.sym.Pooling(data=net,
                          name='pool',
                          pool_type='max',
                          kernel=(2, 2),
                          stride=(2, 2))
     net = mx.sym.Flatten(data=net)
     net = mx.sym.FullyConnected(data=net,
                                 name='fc1',
                                 num_hidden=hidden_size)
     net = mx.sym.Activation(data=net, act_type='relu')
     net = mx.sym.FullyConnected(data=net,
                                 name='fc2',
                                 num_hidden=num_classes)
     net = mx.sym.SoftmaxOutput(data=net,
                                name='softmax',
                                normalization='batch')
     # Create forward function and add parameters to this model.
     input_shapes = {
         'X': (batch_size, ) + input_size,
         'softmax_label': (batch_size, )
     }
     self.cnn = Function(net, input_shapes=input_shapes, name='cnn')
     self.add_params(self.cnn.get_params())
Exemplo n.º 2
0
 def __init__(self):
     super(ConvolutionNet, self).__init__()
     # Define symbols that using convolution and max pooling to extract better features
     # from input image.
     net = mx.sym.Variable(name='X')
     net = mx.sym.Convolution(data=net,
                              name='conv',
                              kernel=(7, 7),
                              num_filter=32)
     net = mx.sym.Activation(data=net, act_type='relu')
     net = mx.sym.Pooling(data=net,
                          name='pool',
                          pool_type='max',
                          kernel=(2, 2),
                          stride=(2, 2))
     net = mx.sym.Flatten(data=net)
     # Create forward function and add parameters to this model.
     self.conv = Function(
         net,
         input_shapes={'X': (batch_size, ) + input_size},
         name='conv')
     self.add_params(self.conv.get_params())
     # Define ndarray parameters used for classification part.
     output_shape = self.conv.get_one_output_shape()
     conv_out_size = output_shape[1]
     self.add_param(name='w1', shape=(conv_out_size, hidden_size)) \
         .add_param(name='b1', shape=(hidden_size,)) \
         .add_param(name='w2', shape=(hidden_size, num_classes)) \
         .add_param(name='b2', shape=(num_classes,))
Exemplo n.º 3
0
def batch_dot(left, right):
    # wraps mxnet.symbol.batch_dot
    left_symbol = symbol.Variable('left')
    right_symbol = symbol.Variable('right')
    result_symbol = symbol.batch_dot(left_symbol, right_symbol)
    shapes = {'left': left.shape, 'right': right.shape}
    kwargs = {'left': left, 'right': right}
    return Function(result_symbol, shapes)(**kwargs)
Exemplo n.º 4
0
def batch_dot(left, right):
    # assert left.shape[0] == right.shape[0] and left.shape[2] == right.shape[1]
    left_symbol = symbol.Variable('left')
    right_symbol = symbol.Variable('right')
    result_symbol = symbol.batch_dot(left_symbol, right_symbol)
    shapes = {'left': left.shape, 'right': right.shape}
    kwargs = {'left': left, 'right': right}
    return Function(result_symbol, shapes)(**kwargs)
Exemplo n.º 5
0
def cross_correlation_factory(data_shape, kernel_shape):
    batch, num_filter, y, x = kernel_shape
    net = mx.sym.Variable('x')
    net = mx.sym.Convolution(net,
                             name='conv',
                             kernel=(y, x),
                             num_filter=1,
                             no_bias=True)
    conv = Function(net, input_shapes={'x': data_shape})
    return conv
Exemplo n.º 6
0
def cross_correlation(data, kernel):
    batch, num_filter, y, x = kernel.shape
    net = mx.sym.Variable('x')
    net = mx.sym.Convolution(net,
                             name='conv',
                             kernel=(y, x),
                             num_filter=1,
                             no_bias=True)
    conv = Function(net, input_shapes={'x': data.shape})
    #print conv._param_shapes
    res = conv(x=data, conv_weight=kernel)
    return res