Nano Hash - криптовалюты, майнинг, программирование

Как восстановить модель тензорного потока, которая имеет только один файл с расширением .model

Я хочу использовать предварительно обученную модель тензорного потока, предоставленную неизвестным автором. Я не знаю, как ему/ей удалось сохранить модель тензорного потока (он/она использовал версию тензорного потока >= 1.2) только в один файл с расширением «.model», так как обычно я получаю либо три файлы '.meta', '.data', '.index' или один файл с '.ckpt'.

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

Спасибо.


Ответы:


1

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

Для импорта модели в Tensor-flow мы используем

with tf.Session() as sess:
  new_saver = tf.train.import_meta_graph('my_test_model-1000.meta')
  new_saver.restore(sess, tf.train.latest_checkpoint('./'))

Файл .meta содержит все переменные, операции, коллекции и т. д. обученной модели. Что делает tf.train.latest_checkpoint('./'), так это использует файл контрольной точки (который просто хранит запись о последних сохраненных файлах контрольной точки) для импорта файла xxxx_model.data-00000-of-00001. Этот .data-00000-of-00001 содержит все веса, смещения, градиенты и т. д., которые должны быть загружены в переменные, содержащиеся в my_test_model-1000.meta.

Резюме [Полуполный код]

with tf.Session() as sess:
    new_saver = tf.train.import_meta_graph('my_test_model-1000.meta')
    #new_saver.restore(sess, tf.train.latest_checkpoint('./'))
    tensor_variable = tf.trainable_variables()
    for tensor_var in tensor_variable:
        #print(sess.run(tensor_var))
        print(tensor_var)

Этот исходный код распечатает все переменные из .meta, которые можно обучить. Если вы попытаетесь запустить print(sess.run(tensor_var)), вы получите сообщение об ошибке. Это потому, что переменные не были инициализированы. Однако, если вы раскомментируете new_saver.restore(sess, tf.train.latest_checkpoint('./')) и запустите print(sess.run(tensor_var)), вы получите все переменные вместе со значениями, загруженными в переменные.


Теперь к «.model»

Я думаю, что xxxxxx.model работает так же, как xxxx_model.data-00000-of-00001 из tensorflow. Он не содержит переменных, поэтому, если вы попытаетесь сделать

with tf.Session() as sess:
          new_saver = tf.train.import_meta_graph('xxx.model')

вы получите ошибку. Помните, причина в том, что этот .model файл не содержит ни переменных, ни графика операций в любой форме. Если вы также попытаетесь сделать

with tf.Session() as sess:
          new_saver = tf.train.Saver()
          new_saver.restore(sess, "xxxx.model")

вы также получите ошибку. Это связано с тем, что нет соответствующих переменных для загрузки значений. Поэтому, если вы когда-нибудь получите файл xxx.model, вам придется пройти через мучительную репликацию всех переменных и операций, прежде чем пытаться запустить new_saver.restore(sess, "xxxx.model"). Надеюсь, если вы сможете воспроизвести архитектуру, все будет работать гладко и без проблем.

Прошу прощения, что получилось длинно, но учитывая, что в интернете почти нет ответа, пришлось сделать из этого лекцию. :)

19.04.2018
  • Как можно использовать эту модель, чтобы что-то предсказать? У меня есть три файла для встраивания слов, а именно word2vec_model.model, word2vec_model.model.syn1neg.npy и word2vec_model.model.wv.syn0.npy. Теперь я запутался, как использовать эти файлы. 12.10.2019
  • @ProtikNag, у тебя есть метафайл? Если вы этого не сделаете, вам придется сначала построить архитектуру модели, прежде чем вы сможете загрузить свои модели. Я также не совсем уверен, каково содержание файлов .npy, поэтому я боюсь, что мне понадобятся некоторые дополнительные сведения, чтобы иметь возможность дать некоторые предложения. 27.11.2019
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..


    © 2024 nano-hash.ru, Nano Hash - криптовалюты, майнинг, программирование