Beispiel #1
0
 def testVisualize(self):
     from decaf.util import visualize
     try:
         import pydot
         visualize.draw_net_to_file(self.decaf_net, tempfile.mktemp('.png'))
     except (ImportError, pydot.InvocationException):
         raise unittest.SkipTest(
             'pydot not configured correctly. Skipping test.')
     self.assertTrue(True)
Beispiel #2
0
 def testVisualize(self):
     from decaf.util import visualize
     try:
         import pydot
         visualize.draw_net_to_file(self.decaf_net, tempfile.mktemp('.png'))
     except (ImportError, pydot.InvocationException):
         raise unittest.SkipTest(
             'pydot not configured correctly. Skipping test.')
     self.assertTrue(True)
Beispiel #3
0
def main():
    """A simple demo showing how to run decafnet."""
    from decaf.util import smalldata, visualize
    logging.getLogger().setLevel(logging.INFO)
    net = DecafNet()
    lena = smalldata.lena()
    scores = net.classify(lena)
    print 'prediction:', net.top_k_prediction(scores, 5)
    visualize.draw_net_to_file(net._net, 'decafnet.png')
    print 'Network structure written to decafnet.png'
def main():
    """A simple demo showing how to run jeffnet."""
    from decaf.util import smalldata, visualize
    logging.getLogger().setLevel(logging.INFO)
    net = JeffNet()
    lena = smalldata.lena()
    scores = net.classify(lena)
    print 'prediction:', net.top_k_prediction(scores, 5)
    visualize.draw_net_to_file(net._net, 'jeffnet.png')
    print 'Network structure written to jeffnet.png'
def main():
    logging.getLogger().setLevel(logging.INFO)
    ######################################
    # First, let's create the decaf layer.
    ######################################
    logging.info('Loading data and creating the network...')
    decaf_net = base.Net()
    # add data layer
    dataset = mnist.MNISTDataLayer(name='mnist',
                                   rootfolder=ROOT_FOLDER,
                                   is_training=True)
    decaf_net.add_layer(dataset, provides=['image-all', 'label-all'])
    # add minibatch layer for stochastic optimization
    minibatch_layer = core_layers.BasicMinibatchLayer(name='batch',
                                                      minibatch=MINIBATCH)
    decaf_net.add_layer(minibatch_layer,
                        needs=['image-all', 'label-all'],
                        provides=['image', 'label'])
    # add the two_layer network
    decaf_net.add_layers([
        core_layers.FlattenLayer(name='flatten'),
        core_layers.InnerProductLayer(
            name='ip1',
            num_output=NUM_NEURONS,
            filler=fillers.GaussianRandFiller(std=0.1),
            bias_filler=fillers.ConstantFiller(value=0.1)),
        core_layers.ReLULayer(name='relu1'),
        core_layers.InnerProductLayer(
            name='ip2',
            num_output=NUM_CLASS,
            filler=fillers.GaussianRandFiller(std=0.3))
    ],
                         needs='image',
                         provides='prediction')
    # add loss layer
    loss_layer = core_layers.MultinomialLogisticLossLayer(name='loss')
    decaf_net.add_layer(loss_layer, needs=['prediction', 'label'])
    # finish.
    decaf_net.finish()
    ####################################
    # Decaf layer finished construction!
    ####################################

    # now, try to solve it
    if METHOD == 'adagrad':
        # The Adagrad Solver
        solver = core_solvers.AdagradSolver(base_lr=0.02,
                                            base_accum=1.e-6,
                                            max_iter=1000)
    elif METHOD == 'sgd':
        solver = core_solvers.SGDSolver(base_lr=0.1,
                                        lr_policy='inv',
                                        gamma=0.001,
                                        power=0.75,
                                        momentum=0.9,
                                        max_iter=1000)
    solver.solve(decaf_net)
    visualize.draw_net_to_file(decaf_net, 'mnist.png')
    decaf_net.save('mnist_2layers.decafnet')

    ##############################################
    # Now, let's load the net and run predictions
    ##############################################
    prediction_net = base.Net.load('mnist_2layers.decafnet')
    visualize.draw_net_to_file(prediction_net, 'mnist_test.png')
    # obtain the test data.
    dataset_test = mnist.MNISTDataLayer(name='mnist',
                                        rootfolder=ROOT_FOLDER,
                                        is_training=False)
    test_image = base.Blob()
    test_label = base.Blob()
    dataset_test.forward([], [test_image, test_label])
    # Run the net.
    pred = prediction_net.predict(image=test_image)['prediction']
    accuracy = (pred.argmax(1) == test_label.data()).sum() / float(
        test_label.data().size)
    print 'Testing accuracy:', accuracy
    print 'Done.'
    provides='ip2-out')
# The second sigmoid layer
decaf_net.add_layer(
    core_layers.SigmoidLayer(name='sigmoid2'),
    needs='ip2-out',
    provides='sigmoid2-out')
# The reconstruction loss function
decaf_net.add_layer(
    core_layers.SquaredLossLayer(name='loss'),
    needs=['sigmoid2-out', 'patches-flatten'])
# Finished running decaf_net.
decaf_net.finish()

# let's do a proof-of-concept run, and draw the graph network to file.
decaf_net.forward_backward()
visualize.draw_net_to_file(decaf_net, 'sparse-autoencoder-structure.png')

#############################################
# The optimization.
#############################################
logging.info('*** Calling LBFGS solver ***')
solver = core_solvers.LBFGSSolver(
    lbfgs_args={'maxfun': MAXFUN, 'disp': 1})
solver.solve(decaf_net)
# let's get the weight matrix and show it.
weight = decaf_net.layers['ip'].param()[0].data()
#visualize.show_multiple(weight.T)
decaf_net.save('sparse-autoencoder.decafnet')
#pyplot.show()

def main():
    logging.getLogger().setLevel(logging.INFO)
    ######################################
    # First, let's create the decaf layer.
    ######################################
    logging.info('Loading data and creating the network...')
    decaf_net = base.Net()
    # add data layer
    dataset = mnist.MNISTDataLayer(
        name='mnist', rootfolder=ROOT_FOLDER, is_training=True)
    decaf_net.add_layer(dataset,
                        provides=['image-all', 'label-all'])
    # add minibatch layer for stochastic optimization
    minibatch_layer = core_layers.BasicMinibatchLayer(
        name='batch', minibatch=MINIBATCH)
    decaf_net.add_layer(minibatch_layer,
                        needs=['image-all', 'label-all'],
                        provides=['image', 'label'])
    # add the two_layer network
    decaf_net.add_layers([
        core_layers.FlattenLayer(name='flatten'),
        core_layers.InnerProductLayer(
            name='ip1', num_output=NUM_NEURONS,
            filler=fillers.GaussianRandFiller(std=0.1),
            bias_filler=fillers.ConstantFiller(value=0.1)),
        core_layers.ReLULayer(name='relu1'),
        core_layers.InnerProductLayer(
            name='ip2', num_output=NUM_CLASS,
            filler=fillers.GaussianRandFiller(std=0.3))
        ], needs='image', provides='prediction')
    # add loss layer
    loss_layer = core_layers.MultinomialLogisticLossLayer(
        name='loss')
    decaf_net.add_layer(loss_layer,
                        needs=['prediction', 'label'])
    # finish.
    decaf_net.finish()
    ####################################
    # Decaf layer finished construction!
    ####################################
    
    # now, try to solve it
    if METHOD == 'adagrad':
        # The Adagrad Solver
        solver = core_solvers.AdagradSolver(base_lr=0.02, base_accum=1.e-6,
                                            max_iter=1000)
    elif METHOD == 'sgd':
        solver = core_solvers.SGDSolver(base_lr=0.1, lr_policy='inv',
                                        gamma=0.001, power=0.75, momentum=0.9,
                                        max_iter=1000)
    solver.solve(decaf_net)
    visualize.draw_net_to_file(decaf_net, 'mnist.png')
    decaf_net.save('mnist_2layers.decafnet')

    ##############################################
    # Now, let's load the net and run predictions 
    ##############################################
    prediction_net = base.Net.load('mnist_2layers.decafnet')
    visualize.draw_net_to_file(prediction_net, 'mnist_test.png')
    # obtain the test data.
    dataset_test = mnist.MNISTDataLayer(
        name='mnist', rootfolder=ROOT_FOLDER, is_training=False)
    test_image = base.Blob()
    test_label = base.Blob()
    dataset_test.forward([], [test_image, test_label])
    # Run the net.
    pred = prediction_net.predict(image=test_image)['prediction']
    accuracy = (pred.argmax(1) == test_label.data()).sum() / float(test_label.data().size)
    print 'Testing accuracy:', accuracy
    print 'Done.'