Можно ли выполнить график с помощью 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, присвоить метки узлам, а затем снова сохранить его как протобуф? В идеале я хотел бы просто передать вектор, который применяется к входным узлам, и не беспокоиться о каких-либо метках.
В skflow все узлы уже имеют метки, и он просто позаботится о том, чтобы восстановить их для вас.
Имена по умолчанию input:0
а также output:0
за X
а также y
соответственно, а затем несколько пользовательских имен для прогнозов и потерь в зависимости от модели, которую вы использовали.
Чтобы узнать имена предсказаний и вероятностных узлов, нужно взглянуть на endpoints
файл в каталоге вы сохранили модель (если вы использовали estimator.save(path)
для сохранения).
Это должно выглядеть так:
входной сигнал: 0
Выход: 0
logistic_regression / softmax_classifier / Софтмакс
logistic_regression / softmax_classifier / Xent: 0
Где первые два являются именами узлов ввода / вывода, а вторые два являются узлами прогнозирования и потерь.
Если вы можете «без труда восстановить модель и делать прогнозы в 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
Все узлы имеют имена / метки независимо от того, назвали вы их явно или нет.