2016-01-31 1 views
4

Возможно ли выполнить график с использованием API Tensorflow C++, который не имеет помеченных входных (или выходных) узлов? Насколько я знаю, при обучении моей модели (с использованием skflow в python, который впоследствии был сохранен как бинарный protobuf), я не помещал узлы ввода/вывода, но я смог восстановить модель и делать прогнозы без затруднений в Python. При использовании C++ API для выполнения графика входные векторы представляют собой пары строк и тензоров, где я предполагаю, что String ссылается на метку входного узла. Из документов:Выполнение модели, прошедшей обучение в skflow с использованием API Tensorflow 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. Выполняется, но не возвращает Тензоры для узлов в target_node_names.

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

ответ

6

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

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

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

Он должен выглядеть следующим образом:

ввода: 0

выхода: 0

logistic_regression/softmax_classifier/SoftMax

logistic_regression/softmax_classifier/Xent: 0

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

1

Если вы можете «восстановить модель и сделать прогнозы без труда в 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

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

Смежные вопросы