Python — Выполнение модели, обученной в skflow, с использованием API Tensorflow C ++

Можно ли выполнить график с помощью API Tensorflow C ++, который не имеет помеченных входных (или выходных) узлов? Насколько я знаю, при обучении моей модели (с использованием skflow в python, который я затем позже сохранил как двоичный протобуф), у меня не было помеченных узлов ввода / вывода, но я смог восстановить модель и делать предсказания без затруднений. в Python. При использовании API C ++ для выполнения графа входные векторы представляют собой пары строк и тензоров, где я предполагаю, что строка представляет собой метку входного узла. Из документов:

Session::Run(const std::vector< std::pair< string, Tensor > > &inputs,
const std::vector< string > &output_tensor_names,
const std::vector< string > &target_node_names,
std::vector< Tensor > *outputs)=0

Запускает график с предоставленными входными тензорами и заполняет выходные данные для
конечные точки, указанные в output_tensor_names. Бежит, но не
возвращать Тензорные узлы в именах целевых_узлов.

Есть ли способ, как я могу выполнить график, не зная меток моих узлов ввода / вывода? Возможно, есть способ, которым я могу загрузить график в Python, присвоить метки узлам, а затем снова сохранить его как протобуф? В идеале я хотел бы просто передать вектор, который применяется к входным узлам, и не беспокоиться о каких-либо метках.

4

Решение

В skflow все узлы уже имеют метки, и он просто позаботится о том, чтобы восстановить их для вас.

Имена по умолчанию input:0 а также output:0 за X а также y соответственно, а затем несколько пользовательских имен для прогнозов и потерь в зависимости от модели, которую вы использовали.

Чтобы узнать имена предсказаний и вероятностных узлов, нужно взглянуть на endpoints файл в каталоге вы сохранили модель (если вы использовали estimator.save(path) для сохранения).

Это должно выглядеть так:

входной сигнал: 0

Выход: 0

logistic_regression / softmax_classifier / Софтмакс

logistic_regression / softmax_classifier / Xent: 0

Где первые два являются именами узлов ввода / вывода, а вторые два являются узлами прогнозирования и потерь.

6

Другие решения

Если вы можете «без труда восстановить модель и делать прогнозы в Python», то вы можете узнать имена / метки входных узлов или тензоров, используя их свойство «name», поиск «.name» в любом из них:

https://www.tensorflow.org/versions/0.6.0/api_docs/python/framework.html#Operation
или же:
https://www.tensorflow.org/versions/0.6.0/api_docs/python/framework.html#Tensor

Все узлы имеют имена / метки независимо от того, назвали вы их явно или нет.

1

По вопросам рекламы [email protected]