Я создал объект DNNClassifier в тензорном потоке Python и сохранил его в файл protobuf:
dnn_classifier = tf.estimator.DNNClassifier(...)
dnn_classifier.train(...)
dnn_classifier.export_savedmodel('saved_model.pb',...)
Мне нужно импортировать указанную модель в C ++ и сделать прогноз на новый вектор данных. Я скомпилировал библиотеку tenorflow и подтвердил, что она работает с тестовым кодом.
Я загрузил модель следующим образом:
std::unique_ptr<tensorflow::Session>* session
SavedModelBundle* const bundle = new SavedModelBundle();
LoadSavedModel(SessionOptions(), RunOptions(), "saved_model.pb", {"serve"}, bundle);
session->reset(bundle->session.get());
У меня есть 12 входных функций (например: A, B, C, …, L), и мне нужен прогноз класса, основанный на них.
Tensor A(DT_FLOAT, TensorShape()); A.scalar<float>()() = 1.4;
Tensor B(DT_FLOAT, TensorShape()); B.scalar<float>()() = -0.6;
...
Tensor L(DT_FLOAT, TensorShape()); L.scalar<float>()() = 2.6;
const std::vector<std::pair<string, Tensor> >& inputs = {{"A",A},{"B",B}...,{"L",L}}
const std::vector<string>& output_tensor_names = {"A","B",...,"L"}
std::vector<Tensor> outputs;
Вот где я предполагаю, что прогноз должен произойти:
session->Run(inputs, output_tensor_names, {}, &outputs);
Этот код работает, но я не думаю, что он делает то, что я хочу.
Есть лучший способ сделать это? SavedModelBundle также имеет элемент данных MetaGraphDef, который может быть полезен, но я не знаю, как сделать из него прогноз. Помогите?
Задача ещё не решена.
Других решений пока нет …