diff --git a/02.recognize_digits/train.py b/02.recognize_digits/train.py index 6a11839a829be0a39d052557316a1a29bde5aff1..d6ea88312a1d8a9587799844c5e75a5ec66692e9 100644 --- a/02.recognize_digits/train.py +++ b/02.recognize_digits/train.py @@ -45,56 +45,60 @@ def convolutional_neural_network(img): return predict -paddle.init(use_gpu=False, trainer_count=1) - -# define network topology -images = paddle.layer.data( - name='pixel', type=paddle.data_type.dense_vector(784)) -label = paddle.layer.data(name='label', type=paddle.data_type.integer_value(10)) - -# Here we can build the prediction network in different ways. Please -# choose one by uncomment corresponding line. -# predict = softmax_regression(images) -# predict = multilayer_perceptron(images) -predict = convolutional_neural_network(images) - -cost = paddle.layer.classification_cost(input=predict, label=label) - -parameters = paddle.parameters.create(cost) - -optimizer = paddle.optimizer.Momentum( - learning_rate=0.1 / 128.0, - momentum=0.9, - regularization=paddle.optimizer.L2Regularization(rate=0.0005 * 128)) - -trainer = paddle.trainer.SGD( - cost=cost, parameters=parameters, update_equation=optimizer) - -lists = [] - - -def event_handler(event): - if isinstance(event, paddle.event.EndIteration): - if event.batch_id % 100 == 0: - print "Pass %d, Batch %d, Cost %f, %s" % ( - event.pass_id, event.batch_id, event.cost, event.metrics) - if isinstance(event, paddle.event.EndPass): - result = trainer.test(reader=paddle.batch( - paddle.dataset.mnist.test(), batch_size=128)) - print "Test with Pass %d, Cost %f, %s\n" % (event.pass_id, result.cost, - result.metrics) - lists.append((event.pass_id, result.cost, - result.metrics['classification_error_evaluator'])) - - -trainer.train( - reader=paddle.batch( - paddle.reader.shuffle(paddle.dataset.mnist.train(), buf_size=8192), - batch_size=128), - event_handler=event_handler, - num_passes=100) - -# find the best pass -best = sorted(lists, key=lambda list: float(list[1]))[0] -print 'Best pass is %s, testing Avgcost is %s' % (best[0], best[1]) -print 'The classification accuracy is %.2f%%' % (100 - float(best[2]) * 100) +def main(): + paddle.init(use_gpu=False, trainer_count=1) + + # define network topology + images = paddle.layer.data( + name='pixel', type=paddle.data_type.dense_vector(784)) + label = paddle.layer.data( + name='label', type=paddle.data_type.integer_value(10)) + + # Here we can build the prediction network in different ways. Please + # choose one by uncomment corresponding line. + # predict = softmax_regression(images) + # predict = multilayer_perceptron(images) + predict = convolutional_neural_network(images) + + cost = paddle.layer.classification_cost(input=predict, label=label) + + parameters = paddle.parameters.create(cost) + + optimizer = paddle.optimizer.Momentum( + learning_rate=0.1 / 128.0, + momentum=0.9, + regularization=paddle.optimizer.L2Regularization(rate=0.0005 * 128)) + + trainer = paddle.trainer.SGD( + cost=cost, parameters=parameters, update_equation=optimizer) + + lists = [] + + def event_handler(event): + if isinstance(event, paddle.event.EndIteration): + if event.batch_id % 100 == 0: + print "Pass %d, Batch %d, Cost %f, %s" % ( + event.pass_id, event.batch_id, event.cost, event.metrics) + if isinstance(event, paddle.event.EndPass): + result = trainer.test(reader=paddle.batch( + paddle.dataset.mnist.test(), batch_size=128)) + print "Test with Pass %d, Cost %f, %s\n" % ( + event.pass_id, result.cost, result.metrics) + lists.append((event.pass_id, result.cost, + result.metrics['classification_error_evaluator'])) + + trainer.train( + reader=paddle.batch( + paddle.reader.shuffle(paddle.dataset.mnist.train(), buf_size=8192), + batch_size=128), + event_handler=event_handler, + num_passes=100) + + # find the best pass + best = sorted(lists, key=lambda list: float(list[1]))[0] + print 'Best pass is %s, testing Avgcost is %s' % (best[0], best[1]) + print 'The classification accuracy is %.2f%%' % (100 - float(best[2]) * 100) + + +if __name__ == '__main__': + main() diff --git a/08.recommender_system/train.py b/08.recommender_system/train.py index 2adb802f0e79cebac3ed08d70429ba3b35da307c..37d35edee2d9c2f039b0b57839e89ff6751a3d70 100644 --- a/08.recommender_system/train.py +++ b/08.recommender_system/train.py @@ -3,9 +3,7 @@ import cPickle import copy -def main(): - paddle.init(use_gpu=False) - movie_title_dict = paddle.dataset.movielens.get_movie_title_dict() +def get_usr_combined_features(): uid = paddle.layer.data( name='user_id', type=paddle.data_type.integer_value( @@ -36,7 +34,11 @@ def main(): input=[usr_fc, usr_gender_fc, usr_age_fc, usr_job_fc], size=200, act=paddle.activation.Tanh()) + return usr_combined_features + +def get_mov_combined_features(): + movie_title_dict = paddle.dataset.movielens.get_movie_title_dict() mov_id = paddle.layer.data( name='movie_id', type=paddle.data_type.integer_value( @@ -61,7 +63,13 @@ def main(): input=[mov_fc, mov_categories_hidden, mov_title_conv], size=200, act=paddle.activation.Tanh()) + return mov_combined_features + +def main(): + paddle.init(use_gpu=False) + usr_combined_features = get_usr_combined_features() + mov_combined_features = get_mov_combined_features() inference = paddle.layer.cos_sim( a=usr_combined_features, b=mov_combined_features, size=1, scale=5) cost = paddle.layer.mse_cost(