Я столкнулся со странным периодическим паттерном потери поезда в задаче классификации меток с использованием AdamOptimzer в тензорном потоке.
Как показано на рисунке, потеря поезда слегка увеличивалась с внезапным падением в каждую эпоху. Какова возможная причина этого?
AdamOptimizer
используется со скоростью обучения разогрева + полиномиального затухания.
opt = tf.train.AdamOptimizer(learning_rate=learning_rate, epsilon=0.00001)
train_op = opt.optimize(cross_entropy_loss, lr)
Конвейер данных описан ниже.
# data pipeline
dataset = tf.data.Dataset.list_files(tfrecords_names)
# shuffle filenames
dataset = dataset.shuffle(buffer_size=config.num_parallel_readers)
# repeat filename lists
dataset = dataset.repeat(config.epoch)
dataset = dataset.interleave(tf.data.TFRecordDataset,
cycle_length=config.num_parallel_readers)
# parse samples
dataset = dataset.map(map_func=parse_record,
num_parallel_calls=config.num_parallel_calls)
# prefetch samples
dataset = dataset.prefetch(buffer_size=config.prefetch_buffer_size)
# shuffle samples
dataset = dataset.shuffle(buffer_size=config.shuffle_buffer_size)
# make a batch
dataset = dataset.batch(config.batch_size)