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)
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))
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))
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 )