我使用python训练了graph.pb文件,我想将训练好的TensorFlow模型导出到C ++,我在github上引用了一些代码,但仍然无法使用C ++成功导入训练的模型。使用MNIST数据。>
在python中,我试图这样做:
Import graph.pb (Fake code)
img = Image.open(image_path).convert('L')
flatten_img = np.reshape(img, 784)
x = np.array([255 - flatten_img])
input_x = self.sess.graph.get_tensor_by_name("input:0")
keep_prob = self.sess.graph.get_tensor_by_name("keep_prob:0")
out_softmax = self.sess.graph.get_tensor_by_name("output:0")
y = self.sess.run(out_softmax, feed_dict={input_x : x, keep_prob : 0.5})
print('Predict digit', np.argmax(y[0]))
但是在C API中,我不知道如何操作:
TF_Graph* graph = tf_utils::LoadGraphDef( "graph.pb" );
TF_Output input_op = { TF_GraphOperationByName( graph, "input" ), 0 };
const std::vector<std::int64_t> input_dims = { 784 };
const std::vector<float> input_vals = {...};
TF_Tensor* tensor = TF_AllocateTensor( TF_FLOAT, input_dims.data(), input_dims.size(), input_vals.size() * sizeof( float ));
void* tensor_data = TF_TensorData( tensor );
std::memcpy( tensor_data, input_vals.data(), std::min( input_vals.size() * sizeof( float ), TF_TensorByteSize( tensor ) ) );
TF_SessionRun( sess,nullptr, &input_op, &input_tensor, 1, &out_op, &output_tensor, 1, nullptr, 0, nullptr, status);
但是它不起作用,我使用了dropout函数来防止过拟合, 如何在C_API上使用辍学