Не знаю, почему мой скрипт build_image_data.py для tensforflow не работает.

Я пытаюсь преобразовать набор изображений jpg в TFRecord для использования с CNN в Tensorflow. Я использую скрипт build_image_data.py отсюда:

https://github.com/tensorflow/models/blob/master/inception/inception/data/build_image_data.py

Я создал каталог проверки и учебный каталог, а также файл labels.txt с соответствующими метками. Я запускаю скрипт, используя блокнот jupyter (я также пробовал через командную строку), и я изменил аргументы tf.app.flags.DEFINE_string на соответствующие имена каталогов/файлов. Когда я запускаю его, я получаю следующую ошибку:

Saving results to /tmp/
Determining list of input files and labels from /tmp/.
---------------------------------------------------------------------------
NotFoundError                             Traceback (most recent call last)
<ipython-input-2-6349ff3421a2> in <module>()
    356 
    357 if __name__ == '__main__':
--> 358   tf.app.run()

C:\Users\Lenovo\Anaconda3\envs\tensorflow3_5\lib\site-packages\tensorflow\python\platform\app.py in run(main, argv)
     42   # Call the main function, passing through any arguments
     43   # to the final program.
---> 44   _sys.exit(main(_sys.argv[:1] + flags_passthrough))
     45 
     46 

<ipython-input-2-6349ff3421a2> in main(unused_argv)
    350   # Run it!
    351   _process_dataset('validation', FLAGS.validation_directory,
--> 352                    FLAGS.validation_shards, FLAGS.labels_file)
    353   _process_dataset('train', FLAGS.train_directory,
    354                    FLAGS.train_shards, FLAGS.labels_file)

<ipython-input-2-6349ff3421a2> in _process_dataset(name, directory, num_shards, labels_file)
    336     labels_file: string, path to the labels file.
    337   """
--> 338   filenames, texts, labels = _find_image_files(directory, labels_file)
    339   _process_image_files(name, filenames, texts, labels, num_shards)
    340 

<ipython-input-2-6349ff3421a2> in _find_image_files(data_dir, labels_file)
    288   print('Determining list of input files and labels from %s.' % data_dir)
    289   unique_labels = [l.strip() for l in tf.gfile.FastGFile(
--> 290       labels_file, 'r').readlines()]
    291 
    292   labels = []

C:\Users\Lenovo\Anaconda3\envs\tensorflow3_5\lib\site-packages\tensorflow\python\lib\io\file_io.py in readlines(self)
    126   def readlines(self):
    127     """Returns all lines from the file in a list."""
--> 128     self._preread_check()
    129     lines = []
    130     while True:

C:\Users\Lenovo\Anaconda3\envs\tensorflow3_5\lib\site-packages\tensorflow\python\lib\io\file_io.py in _preread_check(self)
     71       with errors.raise_exception_on_not_ok_status() as status:
     72         self._read_buf = pywrap_tensorflow.CreateBufferedInputStream(
---> 73             compat.as_bytes(self.__name), 1024 * 512, status)
     74 
     75   def _prewrite_check(self):

C:\Users\Lenovo\Anaconda3\envs\tensorflow3_5\lib\contextlib.py in __exit__(self, type, value, traceback)
     64         if type is None:
     65             try:
---> 66                 next(self.gen)
     67             except StopIteration:
     68                 return

C:\Users\Lenovo\Anaconda3\envs\tensorflow3_5\lib\site-packages\tensorflow\python\framework\errors_impl.py in raise_exception_on_not_ok_status()
    464           None, None,
    465           compat.as_text(pywrap_tensorflow.TF_Message(status)),
--> 466           pywrap_tensorflow.TF_GetCode(status))
    467   finally:
    468     pywrap_tensorflow.TF_DeleteStatus(status)

NotFoundError: NewRandomAccessFile failed to Create/Open:  : The system cannot find the path specified. 

Любые подсказки? Я запускаю скрипт из того же каталога, в котором находятся мои папки проверки и обучения. Спасибо.

РЕДАКТИРОВАТЬ: пытался использовать полный путь, но все равно выдавал ту же ошибку. Вот соответствующий раздел кода, я уверен, что это какая-то простая ошибка с моей стороны.

tf.app.flags.DEFINE_string('train_directory', '/tmp/',
                           'C:/Users/Lenovo/dir2/tensorflow_code/cell_tf/cell_images/main_cell_images/TRAIN_DIR')
tf.app.flags.DEFINE_string('validation_directory', '/tmp/',
                           'C:/Users/Lenovo/dir2/tensorflow_code/cell_tf/cell_images/main_cell_images/VALIDATION_DIR')
tf.app.flags.DEFINE_string('output_directory', '/tmp/',
                           'C:/Users/Lenovo/dir2/tensorflow_code/cell_tf/cell_images/main_cell_images/OUTPUT_DIR')

tf.app.flags.DEFINE_integer('train_shards', 1,
                            'Number of shards in training TFRecord files.')
tf.app.flags.DEFINE_integer('validation_shards', 1,
                            'Number of shards in validation TFRecord files.')

tf.app.flags.DEFINE_integer('num_threads', 1,
                            'Number of threads to preprocess the images.')

tf.app.flags.DEFINE_string('labels_file', '','C:/Users/Lenovo/dir2/tensorflow_code/cell_tf/cell_images/main_cell_images/MYLABELS.TXT')

person Jaafa    schedule 16.04.2017    source источник
comment
Работают ли абсолютные пути?   -  person Allen Lavoie    schedule 17.04.2017
comment
Только что попробовал, не повезло. Смотрите мою правку.   -  person Jaafa    schedule 17.04.2017
comment
Ах. Второй аргумент DEFINE_string устанавливает значение по умолчанию; третий - просто описание флага.   -  person Allen Lavoie    schedule 17.04.2017
comment
Знал, что это что-то простое! Благодарю вас!   -  person Jaafa    schedule 17.04.2017


Ответы (1)


Вы должны указать адрес вместо /temp/

tf.app.flags.DEFINE_string('train_directory', 'D:/full/path',
                       'Training data directory')
person Hisham Sliman    schedule 09.05.2017