Tensorflow: NotFoundError: нет такого файла или каталога

Я столкнулся с проблемой восстановления веса модели тензорного потока.

Итак, во время обучения модели я сохранял контрольную точку модели после каждых 500 итераций,

if j%500==0:
                    with open('iterres.txt','a') as f:
                        f.write(str({'epoch': i, 'test_accuracy': evaluate_(model,batch_size=100),'iteration':j}) + '\n')
                        os.system('mkdir ' + str(i)+'epoch'+str(j))
                        saver.save(sess, '/home/g_cloud/exe_paul/'+str(i)+'epoch'+str(j)+'/'+str(i))

Теперь у меня была папка контрольных точек со всеми весами и метаданными:

Я загрузил веса и создал новую папку с именем «new_backup», где есть все веса и метаданные:

Когда я пытаюсь загрузить эти файлы из этой папки:

import tensorflow as tf


labels_dict={
              1: 'Yes', 
              0: 'No'
            }


with tf.Session() as sess:


    saver = tf.train.import_meta_graph('../new_backup/1.meta')
    restore = saver.restore(sess,tf.train.latest_checkpoint('../new_backup/'))
    graph=tf.get_default_graph()

    query= graph.get_tensor_by_name("input:0")
    result=graph.get_tensor_by_name("netout:0")

Затем я получаю эту ошибку:

NotFoundError: /home/g_cloud/exe_paul/1epoch1000; No such file or directory

Это была моя облачная учетная запись, а 1epoch1000 — старая папка, в которой сохранялся весь вес во время тренировки. Моя проблема в том, что если я иду в облако и использую тот же скрипт для восстановления модели, когда есть папка 1epoch1000, тогда скрипт работает, но в противном случае он выдает эту ошибку.

Как я могу изменить мета на путь перенаправления или как я могу восстановить модель в любом месте?


person Aaditya Ura    schedule 03.06.2018    source источник


Ответы (1)


Я пытался найти ответ, но не повезло. Затем я провел небольшой эксперимент, поэтому, когда вы сохраните свою модель, вы получите четыре файла:

model.data
model.index
model.meta
checkpoint

Теперь откройте контрольную точку как файл .txt, где вы увидите несколько путей:

model_checkpoint_path: "/home/g_cloud/exe_paul/1epoch1000/model"
all_model_checkpoint_paths: "/home/g_cloud/exe_paul/1epoch500/0"
all_model_checkpoint_paths: "/home/g_cloud/exe_paul/1epoch1000/0"
all_model_checkpoint_paths: "/home/g_cloud/exe_paul/1epoch2000/1"
all_model_checkpoint_paths: "/home/g_cloud/exe_paul/1epoch2500/1"
all_model_checkpoint_paths: "/home/g_cloud/exe_paul/1epoch3000/1"

Просто измените первый путь, который говорит о контрольной точке модели, на локальный путь вашей машины, где находится ваша модель.

После этого измените путь на локальный путь в:

saver = tf.train.import_meta_graph('../new_backup/1.meta')
restore = saver.restore(sess,tf.train.latest_checkpoint('../new_backup/'))

Вот и все.

person Aaditya Ura    schedule 05.06.2018
comment
Такое поведение очень странно — есть идеи, почему относительные пути будут работать, а абсолютные — нет? - person mortonjt; 24.10.2018