Использование обучающих TFRecords, хранящихся в Google Cloud

Моя цель — использовать обучающие данные (формат: tfrecords), хранящиеся в облачном хранилище Google, когда я локально запускаю свое обучающее приложение Tensorflow. (Почему локально? : я тестирую, прежде чем превратить его в учебный пакет для Cloud ML)

Основываясь на этой теме, мне не нужно ничего делать, поскольку базовый API Tensorflow должен уметь читать gs://(url)

Однако это не так, и ошибки, которые я вижу, имеют формат:

2017-06-06 15:38:55.589068: I tensorflow/core/platform/cloud/retrying_utils.cc:77] Операция не удалась и будет автоматически повторена через 1,38118 секунд (попытка 1 из 10), вызванная: Недоступно: Ошибка выполнения HTTP-запроса (код ответа HTTP 0, код ошибки 6, сообщение об ошибке «Не удалось разрешить метаданные узла»)

2017-06-06 15:38:56.976396: I tensorflow/core/platform/cloud/retrying_utils.cc:77] Операция не удалась и будет автоматически повторена через 1,94469 секунд (попытка 2 из 10), вызванная: Недоступно: Ошибка выполнения HTTP-запроса (код ответа HTTP 0, код ошибки 6, сообщение об ошибке «Не удалось разрешить метаданные узла»)

2017-06-06 15:38:58.925964: I tensorflow/core/platform/cloud/retrying_utils.cc:77] Операция не удалась и будет автоматически повторена через 2,76491 секунды (попытка 3 из 10), вызванная: Недоступно: Ошибка выполнения HTTP-запроса (код ответа HTTP 0, код ошибки 6, сообщение об ошибке «Не удалось разрешить метаданные узла»)

Я не могу понять, где я должен начать отладку этой ошибки.

Вот фрагмент, который воспроизвел проблему, а также показывает API tensorflow, который я использую.

def _preprocess_features(features):
        """Function that returns preprocessed images"""

def _parse_single_example_from_tfrecord(value):
    features = (
        tf.parse_single_example(value,
                                features={'image_raw': tf.FixedLenFeature([], tf.string),
                                          'label': tf.FixedLenFeature([model_config.LABEL_SIZE], tf.int64)
                                          })
        )
    return features

def _read_and_decode_tfrecords(filename_queue):
    reader = tf.TFRecordReader()
    # Point it at the filename_queue
    _, value = reader.read(filename_queue)
    features = _parse_single_example_from_tfrecord(value)
    # decode the binary string image data
    image, label = _preprocess_features(features)
    return image, label

def test_tfread(filelist):
  train_filename_queue = (
    tf.train.string_input_producer(filelist,
                                   num_epochs=None,
                                   shuffle=True))
  image, label = (
    _read_and_decode_tfrecords(train_filename_queue))
  return image

images= test_tfread(["gs://test-bucket/t.tfrecords"])
sess = tf.Session(config=tf.ConfigProto(
                allow_soft_placement=True,
                log_device_placement=True))
coord = tf.train.Coordinator()
threads = tf.train.start_queue_runners(sess=sess, coord=coord)
try:
  for step in range(model_config.MAX_STEPS):
      _ = sess.run([images])
finally:
  # When done, ask the threads to stop.
  coord.request_stop()
# Finally, wait for them to join (i.e. cleanly shut down)
coord.join(threads)

person 7hacker    schedule 06.06.2017    source источник


Ответы (1)


Попробуйте выполнить следующую команду

gcloud auth application-default login

person rhaertel80    schedule 07.06.2017
comment
Потрясающий! Это работает - Спасибо! Не могли бы вы также рассказать мне, как теперь я могу сделать так, чтобы мой учебный пакет выполнял это программно, когда он развернут в Google Cloud ML? - person 7hacker; 07.06.2017
comment
В этом нет необходимости при работе в CloudML. Если у вас возникли проблемы, сообщите о них. (Но, FWIW, вы всегда можете использовать subprocess.check_call(["gcloud", "auth", "application-default', "login"])) - person rhaertel80; 08.06.2017