def test_aggregation(): batch_size = 128 img_size = 10 num_out = 3 m = Model('test model cpu') l_in = m.add_layer(layers.InputLayer(shape=(batch_size,img_size)), name="l_in") l_out_mean = m.add_layer(layers.DenseLayer(l_in, num_out), name="l_out_mean") l_out_sum = m.add_layer(layers.DenseLayer(l_in, num_out), name="l_out_sum") m.bind_input(l_in, "pixels") m.bind_output(l_out_mean, lasagne.objectives.squared_error, "emotions", "label", "mean") m.bind_output(l_out_sum, lasagne.objectives.squared_error, "emotions", "label", "sum") from pprint import pprint pprint(m.to_dict()) global_update_settings = ParamUpdateSettings(update=lasagne.updates.nesterov_momentum,learning_rate=0.1, momentum=0.5) trainer = Trainer(m, global_update_settings) pixels = np.random.rand(batch_size,img_size).astype(theano.config.floatX) emotions = np.random.rand(batch_size,num_out).astype(theano.config.floatX) batch_dict = dict( # learning_rate_default=0.1, # momentum_default=0.5, pixels=pixels, emotions=emotions, exmotions=emotions.copy() ) outs = trainer.train_step(batch_dict) print "Aggregation test succeeded"
def test_serialization(): m2 = _build_model() serialized_old = m2.to_dict() print "original model" pprint.pprint(serialized_old) m3 = Model('test serialize') m3.from_dict(serialized_old) print "model loaded from dict" pprint.pprint(m3.to_dict()) data = dict( pixels=np.random.rand(10, 1, 20, 10).astype(theano.config.floatX)) dirpath = tempfile.mkdtemp() filepath = os.path.join(dirpath, 'testmodelout') m3.save_model(filepath) out3 = m3.predict(data, ['out', 'out2']) m4 = Model('test convenience') m4.load_model(filepath) shutil.rmtree(dirpath) assert serialized_old == m4.to_dict() assert np.allclose(m4.layers['DenseLayer_2'].W.get_value(), m3.layers['DenseLayer_2'].W.get_value()) assert ~np.allclose(m4.layers['DenseLayer_2'].W.get_value(), m2.layers['DenseLayer_2'].W.get_value()) out4 = m4.predict(data, ['out', 'out2']) print 'out pre serialization' print out3['out'] print 'out post serialization' print out4['out'] print 'out2 pre serialization' print out3['out2'] print 'out2 post serialization' print out4['out2'] assert np.allclose(out4['out'], out3['out']) assert np.allclose(out4['out2'], out3['out2'])
def test_serialization(): m2 = _build_model() serialized_old = m2.to_dict() print "original model" pprint.pprint(serialized_old) m3 = Model("test serialize") m3.from_dict(serialized_old) print "model loaded from dict" pprint.pprint(m3.to_dict()) data = dict(pixels=np.random.rand(10, 1, 20, 10).astype(theano.config.floatX)) dirpath = tempfile.mkdtemp() filepath = os.path.join(dirpath, "testmodelout") m3.save_model(filepath) out3 = m3.predict(data, ["out", "out2"]) m4 = Model("test convenience") m4.load_model(filepath) shutil.rmtree(dirpath) assert serialized_old == m4.to_dict() assert np.allclose(m4.layers["DenseLayer_2"].W.get_value(), m3.layers["DenseLayer_2"].W.get_value()) assert ~np.allclose(m4.layers["DenseLayer_2"].W.get_value(), m2.layers["DenseLayer_2"].W.get_value()) out4 = m4.predict(data, ["out", "out2"]) print "out pre serialization" print out3["out"] print "out post serialization" print out4["out"] print "out2 pre serialization" print out3["out2"] print "out2 post serialization" print out4["out2"] assert np.allclose(out4["out"], out3["out"]) assert np.allclose(out4["out2"], out3["out2"])
def test_aggregation(): batch_size = 128 img_size = 10 num_out = 3 m = Model('test model cpu') l_in = m.add_layer(layers.InputLayer(shape=(batch_size, img_size)), name="l_in") l_out_mean = m.add_layer(layers.DenseLayer(l_in, num_out), name="l_out_mean") l_out_sum = m.add_layer(layers.DenseLayer(l_in, num_out), name="l_out_sum") m.bind_input(l_in, "pixels") m.bind_output(l_out_mean, lasagne.objectives.squared_error, "emotions", "label", "mean") m.bind_output(l_out_sum, lasagne.objectives.squared_error, "emotions", "label", "sum") from pprint import pprint pprint(m.to_dict()) global_update_settings = ParamUpdateSettings( update=lasagne.updates.nesterov_momentum, learning_rate=0.1, momentum=0.5) trainer = Trainer(m, global_update_settings) pixels = np.random.rand(batch_size, img_size).astype(theano.config.floatX) emotions = np.random.rand(batch_size, num_out).astype(theano.config.floatX) batch_dict = dict( # learning_rate_default=0.1, # momentum_default=0.5, pixels=pixels, emotions=emotions, exmotions=emotions.copy()) outs = trainer.train_step(batch_dict) print "Aggregation test succeeded"