|
|
|
@ -63,6 +63,8 @@ def main():
|
|
|
|
|
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)
|
|
|
|
@ -80,14 +82,20 @@ def main():
|
|
|
|
|
parameters=parameters,
|
|
|
|
|
update_equation=optimizer)
|
|
|
|
|
|
|
|
|
|
list = []
|
|
|
|
|
|
|
|
|
|
def event_handler(event):
|
|
|
|
|
if isinstance(event, paddle.event.EndIteration):
|
|
|
|
|
if event.batch_id % 100 == 0:
|
|
|
|
|
result = trainer.test(reader=paddle.reader.batched(
|
|
|
|
|
paddle.dataset.mnist.test(), batch_size=128))
|
|
|
|
|
print "Pass %d, Batch %d, Cost %f, %s, Testing metrics %s" % (
|
|
|
|
|
event.pass_id, event.batch_id, event.cost, event.metrics,
|
|
|
|
|
result.metrics)
|
|
|
|
|
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.reader.batched(
|
|
|
|
|
paddle.dataset.mnist.test(), batch_size=128))
|
|
|
|
|
print "Test with Pass %d, Cost %f, %s\n" % (
|
|
|
|
|
event.pass_id, event.cost, result.metrics)
|
|
|
|
|
list.append((event.pass_id, event.cost,
|
|
|
|
|
result.metrics['classification_error_evaluator']))
|
|
|
|
|
|
|
|
|
|
trainer.train(
|
|
|
|
|
reader=paddle.reader.batched(
|
|
|
|
@ -97,10 +105,15 @@ def main():
|
|
|
|
|
event_handler=event_handler,
|
|
|
|
|
num_passes=100)
|
|
|
|
|
|
|
|
|
|
# find the best pass
|
|
|
|
|
best = sorted(list, 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)
|
|
|
|
|
|
|
|
|
|
# output is a softmax layer. It returns probabilities.
|
|
|
|
|
# Shape should be (100, 10)
|
|
|
|
|
probs = paddle.infer(
|
|
|
|
|
output=inference,
|
|
|
|
|
output=predict,
|
|
|
|
|
parameters=parameters,
|
|
|
|
|
reader=paddle.reader.batched(
|
|
|
|
|
paddle.reader.firstn(
|
|
|
|
|