def train(epoches):

    # 训练数据
    train_reader = create_reader(True)
    # 测试数据
    test_reader = create_reader(False)
    train_batch = paddle.batch(reader=paddle.reader.shuffle(train_reader,
                                                            buf_size=32),
                               batch_size=32)
    test_batch = paddle.batch(reader=paddle.reader.shuffle(test_reader,
                                                           buf_size=32),
                              batch_size=32)

    feeding = {'image': 0, 'target': 1, 'label': 2}

    cost = train_caption_net(dict_dim=DICT_DIM,
                             target=target,
                             label=label,
                             input_images=image)

    adam_optimizer = paddle.optimizer.Adam(
        learning_rate=1e-4,
        regularization=paddle.optimizer.L2Regularization(rate=8e-4),
        model_average=paddle.optimizer.ModelAverage(average_window=0.5))

    # 初始化参数,从预训练文件中加载ResNet模型参数
    parameters = paddle.parameters.create(cost)
    parameters.init_from_tar(gzip.open('params/Paddle_ResNet50.tar.gz'))

    def event_handler(event):
        if isinstance(event, paddle.event.EndIteration):
            if event.batch_id % 5 == 0:
                line = "Pass %d, Batch %d, Cost %f, %s\n" % (
                    event.pass_id, event.batch_id, event.cost, event.metrics)
                print(line)
        if isinstance(event, paddle.event.EndPass):
            with gzip.open('params/params_pass_%d.tar.gz' % event.pass_id,
                           'w') as f:
                parameters.to_tar(f)
            result = trainer.test(reader=test_batch)
            line = "Test with Pass %d, %s" % (event.pass_id, result.metrics)
            print(line)

    trainer = paddle.trainer.SGD(cost=cost,
                                 parameters=parameters,
                                 update_equation=adam_optimizer)

    trainer.train(reader=train_batch,
                  event_handler=event_handler,
                  feeding=feeding,
                  num_passes=epoches)
Exemple #2
0
def train():

    paddle.init(use_gpu=False, trainer_count=2)

    image = paddle.layer.data(name='image',
                              type=paddle.data_type.dense_vector(IMG_HEIGHT *
                                                                 IMG_WIDTH),
                              height=IMG_HEIGHT,
                              width=IMG_WIDTH)

    output = model(image)

    label = paddle.layer.data(
        name='label', type=paddle.data_type.integer_value_sequence(NUM_CLASS))

    loss = paddle.layer.ctc(input=output, label=label, size=NUM_CLASS + 1)

    feeding = {'image': 0, 'label': 1}

    parameters = paddle.parameters.create(loss)

    optimizer = paddle.optimizer.RMSProp(
        learning_rate=0.01,
        regularization=paddle.optimizer.L2Regularization(rate=8e-4))

    trainer = paddle.trainer.SGD(cost=loss,
                                 parameters=parameters,
                                 update_equation=optimizer)

    def event_handler(event):
        if isinstance(event, paddle.event.EndIteration):
            if event.batch_id % 5 == 0:
                print("\npass %d, Batch: %d cost: %f" %
                      (event.pass_id + 1, event.batch_id + 1, event.cost))
            else:
                sys.stdout.write('*')
                sys.stdout.flush()
        if isinstance(event, paddle.event.EndPass):
            # save parameters
            with gzip.open('output/params_pass_%d.tar.gz' % event.pass_id,
                           'w') as f:
                parameters.to_tar(f)
            test_reader = data_reader.create_reader('test')
            result = trainer.test(reader=paddle.batch(test_reader,
                                                      batch_size=32),
                                  feeding=feeding)
            print("\nTest with Pass %d, cost: %s" %
                  (event.pass_id + 1, result.cost))

    train_reader = data_reader.create_reader('train')
    reader = paddle.batch(reader=train_reader, batch_size=32)

    trainer.train(reader=reader,
                  feeding=feeding,
                  num_passes=50,
                  event_handler=event_handler)
 def event_handler(event):
     if isinstance(event, paddle.event.EndIteration):
         if event.batch_id % 50 == 0:
             print ("\npass %d, Batch: %d cost: %f metrics: %s" % (event.pass_id, event.batch_id, event.cost, event.metrics))
         else:
             sys.stdout.write('.')
             sys.stdout.flush()
     if isinstance(event, paddle.event.EndPass):
         # save parameters
         with gzip.open('output/params_pass_%d.tar.gz' % event.pass_id, 'w') as f:
             parameters.to_tar(f)
         test_reader = data_reader.create_reader('test')
         result = trainer.test(
             reader=paddle.batch(test_reader, batch_size=128),
             feeding=feeding)
         class_error_rate = result.metrics['classification_error_evaluator']
         print ("\nTest with Pass %d, cost: %s ratio: %f" % (event.pass_id, result.cost,class_error_rate))
Exemple #4
0
def event_handler(event):
    if isinstance(event, paddle.event.EndIteration):
        if event.batch_id % 5 == 0:
            print("\npass %d, Batch: %d cost: %f" %
                  (event.pass_id + 1, event.batch_id + 1, event.cost))
        else:
            sys.stdout.write('*')
            sys.stdout.flush()
    if isinstance(event, paddle.event.EndPass):
        # save parameters
        with gzip.open('output/params_pass_%d.tar.gz' % event.pass_id,
                       'w') as f:
            parameters.to_tar(f)
        test_reader = data_reader.create_reader('test')
        result = trainer.test(reader=paddle.batch(test_reader, batch_size=32),
                              feeding=feeding)
        print("\nTest with Pass %d, cost: %s" %
              (event.pass_id + 1, result.cost))
Exemple #5
0
output = model(image)

# CTC LOSS
loss = paddle.layer.ctc(input=output, label=label, size=NUM_CLASS + 1)

parameters = paddle.parameters.create(loss)

optimizer = paddle.optimizer.RMSProp(
    learning_rate=0.01,
    regularization=paddle.optimizer.L2Regularization(rate=8e-4))

trainer = paddle.trainer.SGD(cost=loss,
                             parameters=parameters,
                             update_equation=optimizer)

train_reader = data_reader.create_reader('train')

feeding = {'image': 0, 'label': 1}


def event_handler(event):
    if isinstance(event, paddle.event.EndIteration):
        if event.batch_id % 5 == 0:
            print("\npass %d, Batch: %d cost: %f" %
                  (event.pass_id + 1, event.batch_id + 1, event.cost))
        else:
            sys.stdout.write('*')
            sys.stdout.flush()
    if isinstance(event, paddle.event.EndPass):
        # save parameters
        with gzip.open('output/params_pass_%d.tar.gz' % event.pass_id,
def train():
    paddle.init(use_gpu=False, trainer_count=1)

    x = paddle.layer.data(
        name='image',
        type=paddle.data_type.dense_vector(IMAGE_SIZE),
        height=32,
        width=80
    )

    label = []
    for i in range(4):
        label_tmp = paddle.layer.data(
            name='label_part_%s' % i,
            type=paddle.data_type.integer_value(10)
        )
        label.append(label_tmp)

    output = model(x)

    loss = []
    for i in range(4):
        loss_tmp = paddle.layer.classification_cost(
            input=output[i],
            label=label[i]
        )
        loss.append(loss_tmp)

    loss = paddle.layer.addto(
        input=loss,
        bias_attr=False,
        act=paddle.activation.Linear()
    )
    parameters = paddle.parameters.create(loss)

    optimizer = paddle.optimizer.Adam(
        learning_rate=1e-3,
        regularization=paddle.optimizer.L2Regularization(rate=8e-4)
    )

    trainer = paddle.trainer.SGD(
        cost=loss,
        parameters=parameters,
        update_equation=optimizer
    )

    feeding = {
        'image': 0,
        'label_part_0': 1,
        'label_part_1': 2,
        'label_part_2': 3,
        'label_part_3': 4,
    }

    def event_handler(event):
        if isinstance(event, paddle.event.EndIteration):
            if event.batch_id % 50 == 0:
                print ("\npass %d, Batch: %d cost: %f metrics: %s" % (event.pass_id, event.batch_id, event.cost, event.metrics))
            else:
                sys.stdout.write('.')
                sys.stdout.flush()
        if isinstance(event, paddle.event.EndPass):
            # save parameters
            with gzip.open('output/params_pass_%d.tar.gz' % event.pass_id, 'w') as f:
                parameters.to_tar(f)
            test_reader = data_reader.create_reader('test')
            result = trainer.test(
                reader=paddle.batch(test_reader, batch_size=128),
                feeding=feeding)
            class_error_rate = result.metrics['classification_error_evaluator']
            print ("\nTest with Pass %d, cost: %s ratio: %f" % (event.pass_id, result.cost,class_error_rate))

    train_reader = data_reader.create_reader('train')
    reader = paddle.batch(
        reader=train_reader,
        batch_size=128
    )
    trainer.train(
        reader=reader,
        feeding=feeding,
        num_passes=10,
        event_handler=event_handler
    )