Как правильно отобразить функцию Python, а затем пакетный набор данных в Tensorflow - PullRequest
0 голосов
/ 26 июня 2018

Я хочу создать конвейер для предоставления нестандартных файлов в нейронную сеть (например, с расширением * .xxx). В настоящее время я структурировал свой код следующим образом:

1) Я определяю список путей, где найти учебные файлы

2) Я определяю экземпляр объекта tf.data.Dataset, содержащий эти пути

3) я сопоставляю с набором данных функцию python, которая берет каждый путь и возвращает связанный массив numpy (загруженный из папки на компьютере); этот массив представляет собой матрицу с размерами [256, 256, 192].

4) Я определяю инициализируемый итератор, а затем использую его во время обучения по сети.

Мое сомнение заключается в размере пакета, который я предоставляю сети. Я хотел бы, чтобы в сеть были доставлены партии размером 64. Как я мог сделать? Например, если я использую функцию train_data.batch (b_size) с b_size = 1, то получается, что при повторении итератор дает один элемент формы [256, 256, 192]; Что делать, если я хочу накормить нейронную сеть всего 64 кусочками этого массива?

Это выдержка из моего кода:

    with tf.name_scope('data'):
        train_filenames = tf.constant(list_of_files_train)

        train_data = tf.data.Dataset.from_tensor_slices(train_filenames)
        train_data = train_data.map(lambda filename: tf.py_func(
            self._parse_xxx_data, [filename], [tf.float32]))

        train_data.shuffle(buffer_size=len(list_of_files_train))
        train_data.batch(b_size)

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

        input_data = iterator.get_next()
        train_init = iterator.make_initializer(train_data)

  [...]

  with tf.Session() as sess:
      sess.run(train_init)
      _ = sess.run([self.train_op])

Большое спасибо заранее

1 Ответ

0 голосов
/ 26 июня 2018

Если я четко понимаю ваш вопрос, вы можете попробовать нарезать массив в нужную вам форму в вашей функции self._parse_xxx_data.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...