[НЛП] BERT Китайский настоящий бой, наступающий на яму

Наконец-то использовал bert, наступил на несколько ям и поделился с вами.


в основном я имею в видуСингулярность со статьей, используя bert для решения двух задач на китайском языке: классификации текста и вычисления подобия. Эти две задачи напрямую упакованы в run_classifer,py, а две другие не внимательно читаются, а используются и добавляются.

1. DataProcessor

Шаг 1: Напишите свой собственный процессор, просто следуйте примеру, вы должныshuffle! ! !

Шаг 2: Добавьте в словарь процессоров функцию main.

2. Early Stopping

Шаг 1: Создайте крючок

early_stopping_hook = tf.contrib.estimator.stop_if_no_decrease_hook(
            estimator=estimator,
            metric_name='eval_loss',
            max_steps_without_decrease=FLAGS.max_steps_without_decrease,
            eval_dir=None,
            min_steps=0,
            run_every_secs=None,
            run_every_steps=FLAGS.save_checkpoints_steps)

Шаг 2: Добавьте в estimator.train

estimator.train(input_fn=train_input_fn, max_steps=num_train_steps, hooks=[early_stopping_hook])

3. Train and Evaluate

Лучше, если вам нужно использовать тензорную доску для просмотра кривой обучения.

Шаг 1: Создайте спецификацию train и eval, здесь вам нужно добавить хук ранней остановки в trainSpec.

train_spec = tf.estimator.TrainSpec(input_fn=train_input_fn, max_steps=num_train_steps,
                                                hooks=[early_stopping_hook])
eval_spec = tf.estimator.EvalSpec(input_fn=eval_input_fn, throttle_secs=0)
tf.estimator.train_and_evaluate(estimator, train_spec, eval_spec)

4. Batch size

Размер пакета Eval и Predict по умолчанию очень мал, не забудьте изменить его.