Как генерировать кадрирование случайного размера с помощью модуля tenorflow.dataset - PullRequest
0 голосов
/ 28 сентября 2018

Я хочу создать случайный размер кадрирования при использовании API набора данных tenorflow с файлом tfrecord.Вот мой код

dataset = tf.data.TFRecordDataset(filenames)
dataset = dataset.map(parse_func)
dataset = dataset.shuffle(buffer_size=10000).batch(batch_size).repeat()
iterator = dataset.make_initializable_iterator()
data_in_tsr, data_gt_tsr,  = iterator.get_next()

def parse_func(example_proto):
    features = {
        'in': tf.FixedLenFeature(image_size, tf.float32),
        'gt': tf.FixedLenFeature(image_size, tf.float32)}

    parsed_features = tf.parse_single_example(example_proto, features)
    mag_in = parsed_features['mag_in']
    mag_gt = parsed_features['mag_gt']

    # random crop 128x128
    crop_sz = random.randint(mag_in.shape[0]//2, mag_in.shape[0])
    mag_in = tf.random_crop(mag_in, (crop_sz, crop_sz, mag_in.shape[2]))

    return mag_in, mag_gt

Проблема заключается в том, что функция map () вызывается ТОЛЬКО один раз, поэтому каждый раз выбирается случайный фрагмент фиксированного размера.Как создать случайный размер урожая?

...