tensflow - конвейер дополнения данных увеличивает значение потерь в поездах - PullRequest
0 голосов
/ 06 февраля 2020

Я реализовал следующий конвейер дополнения данных для своего кода Тензор потока (1.14):

X_train, m_train, y_train = data.get_filenames()
X_val, m_val, y_val = data.get_filenames(train=False)

train_dataset = tf.data.Dataset.from_tensor_slices((X_train, m_train, y_train))#(images, mask, gt))
train_dataset = train_dataset.shuffle(buffer_size=1000))
train_dataset = train_dataset.repeat(count=2)
train_dataset = train_dataset.map(data.load, num_parallel_calls=tf.data.experimental.AUTOTUNE)
train_dataset = train_dataset.map(data.augment, num_parallel_calls=tf.data.experimental.AUTOTUNE)
train_dataset = train_dataset.batch(batch_size)
train_dataset = train_dataset.prefetch(buffer_size=1)

val_dataset = tf.data.Dataset.from_tensor_slices((X_val, m_val, y_val))
val_dataset = val_dataset.shuffle(buffer_size=100)
val_dataset = val_dataset.map(data.load, num_parallel_calls=tf.data.experimental.AUTOTUNE)
val_dataset = val_dataset.batch(batch_size)
val_dataset = val_dataset.prefetch(buffer_size=1)

iterator = tf.data.Iterator.from_structure(train_dataset.output_types,
                                       train_dataset.output_shapes)

data_im, data_mask, data_gt = iterator.get_next()

# create the initialization operations
train_init_op = iterator.make_initializer(train_dataset)
val_init_op = iterator.make_initializer(val_dataset)

def augment(masked, mask, gt):
    seed = random.random()

    masked = tf.image.random_flip_left_right(masked, seed=seed)
    mask = tf.image.random_flip_left_right(mask, seed=seed)
    gt = tf.image.random_flip_left_right(gt, seed=seed)

    masked = tf.image.random_flip_up_down(masked, seed=seed)
    mask = tf.image.random_flip_up_down(mask, seed=seed)
    gt = tf.image.random_flip_up_down(gt, seed=seed)

    return masked, mask, gt

Даже несмотря на то, что я получаю из него связные изображения, кривая тренировочных потерь имеет очень странное поведение: Я до сих пор не в состоянии понять это. (Вы можете видеть это здесь )

Что-то не так с моей реализацией? Я продолжаю читать учебники и другие вопросы, но ничего не получается.

Спасибо заранее!

...