Наконец-то использовал 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 по умолчанию очень мал, не забудьте изменить его.