Example #1
0
from elektronn.net.convnet import MixedConvNN
from elektronn.net.introspection import embedMatricesInGray

# Load Data #
data = MNISTData(path=None, convert2image=False, shift_augment=False)

# Create Autoencoder #
batch_size = 100
cnn = MixedConvNN((28**2), input_depth=None)
cnn.addPerceptronLayer(n_outputs=300, activation_func="tanh")
cnn.addPerceptronLayer(n_outputs=200, activation_func="tanh")
cnn.addPerceptronLayer(n_outputs=50, activation_func="tanh")
cnn.addTiedAutoencoderChain(n_layers=None,
                            activation_func="tanh",
                            input_noise=0.3)
cnn.compileOutputFunctions(
    target="regression")  #compiles the cnn.get_error function as well
cnn.setOptimizerParams(SGD={'LR': 5e-1, 'momentum': 0.9}, weight_decay=0)

print "training..."
for i in range(40000):
    d, l = data.getbatch(batch_size)
    loss, loss_instance, time_per_step = cnn.trainingStep(d, d, mode="SGD")

    if i % 100 == 0:
        print "update:", i, "; Training error:", loss

cnn.layers[3].input_noise.set_value(0.0)
loss, _, test_predictions = cnn.get_error(data.valid_d.reshape((10000, 784)),
                                          data.valid_d.reshape((10000, 784)))
print "Final error:", loss
print "Done."
Example #2
0
cnn.addConvLayer(10,
                 5,
                 pool_shape=2,
                 activation_func="tanh",
                 force_no_dropout=True)  # (nof, filtersize)
cnn.addConvLayer(8,
                 5,
                 pool_shape=2,
                 activation_func="tanh",
                 force_no_dropout=True)
cnn.addPerceptronLayer(200, activation_func="tanh")
cnn.addPerceptronLayer(150, activation_func="tanh")
cnn.addPerceptronLayer(
    10, activation_func="tanh", force_no_dropout=True
)  # need 10 outputs as there are 10 classes in the data set
cnn.compileOutputFunctions()
cnn.setOptimizerParams(SGD={'LR': 1e-2, 'momentum': 0.9}, weight_decay=0)

print "training..."
for i in range(10000):
    d, l = data.getbatch(batch_size)
    loss, loss_instance, time_per_step = cnn.trainingStep(d, l, mode="SGD")

    if i % 100 == 0:
        r = cnn.getDropoutRates()
        cnn.setDropoutRates([
            0.0,
        ] * len(r))
        valid_loss, valid_error, valid_predictions = cnn.get_error(
            data.valid_d, data.valid_l)
        print "update:", i, "; Validation loss:", valid_loss, "Validation error:", valid_error * 100., "%"
# Create CNN #
batch_size = 100
cnn = MixedConvNN((28, 28), input_depth=1)
cnn.addConvLayer(10,
                 5,
                 pool_shape=2,
                 activation_func="abs")  # (nof, filtersize)
cnn.addConvLayer(8, 5, pool_shape=2, activation_func="abs")
cnn.addPerceptronLayer(100, activation_func="abs")
cnn.addPerceptronLayer(80, activation_func="abs")
cnn.addPerceptronLayer(
    10,
    activation_func="abs"
)  # need 10 outputs as there are 10 classes in the data set
cnn.compileOutputFunctions()
cnn.setOptimizerParams(SGD={'LR': 1e-2, 'momentum': 0.9}, weight_decay=0)

print "training..."
for i in range(5000):
    d, l = data.getbatch(batch_size)
    loss, loss_instance, time_per_step = cnn.trainingStep(d, l, mode="SGD")

    if i % 100 == 0:
        valid_loss, valid_error, valid_predictions = cnn.get_error(data.valid_d, data.valid_l)
        print "update:", i, "; Validation loss:", valid_loss, "Validation error:", valid_error * 100., "%"

loss, error, test_predictions = cnn.get_error(data.test_d, data.test_l)
print "Test loss:", loss, "Test error:", error * 100., "%"
print "Done."
# Load Data #
data = MNISTData(path=None,
                 convert2image=False,
                 shift_augment=False)

# Create Autoencoder #
batch_size = 100
cnn = MixedConvNN((28**2), input_depth=None)
cnn.addPerceptronLayer(n_outputs=300, activation_func="tanh")
cnn.addPerceptronLayer(n_outputs=200, activation_func="tanh")
cnn.addPerceptronLayer(n_outputs=50, activation_func="tanh")
cnn.addTiedAutoencoderChain(n_layers=None,
                            activation_func="tanh",
                            input_noise=0.3)
cnn.compileOutputFunctions(target="regression")  #compiles the cnn.get_error function as well
cnn.setOptimizerParams(SGD={'LR': 5e-1, 'momentum': 0.9}, weight_decay=0)

print "training..."
for i in range(40000):
    d, l = data.getbatch(batch_size)
    loss, loss_instance, time_per_step = cnn.trainingStep(d, d, mode="SGD")

    if i % 100 == 0:
        print "update:", i, "; Training error:", loss

cnn.layers[3].input_noise.set_value(0.0)
loss, _, test_predictions = cnn.get_error(data.valid_d.reshape((10000, 784)), data.valid_d.reshape((10000, 784)))
print "Final error:", loss
print "Done."