api_train_v2.py 1.5 KB
Newer Older
Q
qiaolongfei 已提交
1 2
import paddle.v2 as paddle

Y
Yu Yang 已提交
3 4

def main():
Y
Yu Yang 已提交
5
    paddle.init(use_gpu=False, trainer_count=1)
Q
qiaolongfei 已提交
6 7

    # define network topology
8 9 10 11
    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))
Q
qiaolongfei 已提交
12 13 14 15 16 17 18
    hidden1 = paddle.layer.fc(input=images, size=200)
    hidden2 = paddle.layer.fc(input=hidden1, size=200)
    inference = paddle.layer.fc(input=hidden2,
                                size=10,
                                act=paddle.activation.Softmax())
    cost = paddle.layer.classification_cost(input=inference, label=label)

Q
qiaolongfei 已提交
19
    parameters = paddle.parameters.create(cost)
Y
Yu Yang 已提交
20

Q
qiaolongfei 已提交
21
    adam_optimizer = paddle.optimizer.Adam(learning_rate=0.01)
Y
Yu Yang 已提交
22 23

    def event_handler(event):
Y
Yu Yang 已提交
24
        if isinstance(event, paddle.event.EndIteration):
Y
Yu Yang 已提交
25 26 27
            if event.batch_id % 100 == 0:
                print "Pass %d, Batch %d, Cost %f, %s" % (
                    event.pass_id, event.batch_id, event.cost, event.metrics)
Y
Yu Yang 已提交
28 29
        else:
            pass
30

Y
Yu Yang 已提交
31
    trainer = paddle.trainer.SGD(update_equation=adam_optimizer)
Y
Yu Yang 已提交
32

Y
Yu Yang 已提交
33
    trainer.train(
Y
Yu Yang 已提交
34
        reader=paddle.reader.batched(
35
            paddle.reader.shuffle(
Y
Yu Yang 已提交
36
                paddle.dataset.mnist.train(), buf_size=8192),
37
            batch_size=32),
38
        cost=cost,
Y
Yu Yang 已提交
39 40
        parameters=parameters,
        event_handler=event_handler,
Q
qiaolongfei 已提交
41 42 43
        batch_size=32,  # batch size should be refactor in Data reader
        reader_dict={images.name: 0,
                     label.name: 1})
Y
Yu Yang 已提交
44 45 46 47


if __name__ == '__main__':
    main()