我無法找到任何有關如何在C++中使用tensorflow.so
和c_api.h
加載圖的示例。我讀了c_api.h
,但ReadBinaryProto
函數不在其中。如何在沒有ReadBinaryProto
函數的情況下加載圖表?如何在C++語言中加載tensorflow.so和c_api.h的圖形?
2
A
回答
6
如果您使用C++,則可能需要改用C++ API。 label image example可能是幫助您開始的一個很好的示例。
如果您確實想使用C API,請使用TF_GraphImportGraphDef
加載圖形。需要注意的是C API不是特別方便使用(它旨在建立綁定在其他語言,如圍棋,爪哇,防鏽,哈斯克爾等),例如:
#include <stdio.h>
#include <stdlib.h>
#include <tensorflow/c/c_api.h>
TF_Buffer* read_file(const char* file);
void free_buffer(void* data, size_t length) {
free(data);
}
int main() {
// Graph definition from unzipped https://storage.googleapis.com/download.tensorflow.org/models/inception5h.zip
// which is used in the Go, Java and Android examples
TF_Buffer* graph_def = read_file("tensorflow_inception_graph.pb");
TF_Graph* graph = TF_NewGraph();
// Import graph_def into graph
TF_Status* status = TF_NewStatus();
TF_ImportGraphDefOptions* opts = TF_NewImportGraphDefOptions();
TF_GraphImportGraphDef(graph, graph_def, opts, status);
TF_DeleteImportGraphDefOptions(opts);
if (TF_GetCode(status) != TF_OK) {
fprintf(stderr, "ERROR: Unable to import graph %s", TF_Message(status));
return 1;
}
fprintf(stdout, "Successfully imported graph");
TF_DeleteStatus(status);
TF_DeleteBuffer(graph_def);
// Use the graph
TF_DeleteGraph(graph);
return 0;
}
TF_Buffer* read_file(const char* file) {
FILE *f = fopen(file, "rb");
fseek(f, 0, SEEK_END);
long fsize = ftell(f);
fseek(f, 0, SEEK_SET); //same as rewind(f);
void* data = malloc(fsize);
fread(data, fsize, 1, f);
fclose(f);
TF_Buffer* buf = TF_NewBuffer();
buf->data = data;
buf->length = fsize;
buf->data_deallocator = free_buffer;
return buf;
}
+1
謝謝你的回答。我想在tensorflow項目之外使用C++ API。 tensorflow項目中建立「標籤圖像示例」。我如何在張量流之外使用C++ API?我應該包括什麼頭文件? –
0
以前的答案是你的主要選項,如果你想在TensorFlow項目之外使用它(因此不能用Bazel構建)。你需要需要從c_api.h和TF_GraphImportDef加載它,我建議你在Python中訓練和測試,然後在完成時導出模型/圖形用於C++/C Api。
相關問題
- 1. 如何使用c語言在framebuffer中繪製圖形..?
- 2. HTML在加載正確語言之前加載默認語言
- 3. c語言中鏈接和加載的區別是什麼
- 4. 如何在codeigniter中添加阿拉伯語和英語語言?
- 5. 如何使用C語言中的單元測試語言C?
- 6. 如何在sitecore中加載同一語言的不同內容
- 7. 如何在AngularJS中加載語言特定的模板?
- 8. 如何使用R語言在Java中繪製圖形(read.csv(file))
- 9. 在elgg中文語言未加載?
- 10. 加載語言語料庫在GATE
- 11. 圖形編程語言
- 12. %c和%s如何在C語言中工作?
- 13. 語音識別MS Word加載在VB當地語言或C#
- 14. 如何畫中的R語言的圖形與X軸標籤
- 15. 如何在形式加載後加載If語句
- 16. 如何在C語言中使用VTK?
- 17. 如何在C#語言中關閉webform?
- 18. 如何創建位圖(C語言)?
- 19. Sitecore:如何在客戶語言選擇中添加新語言?
- 20. C語言和Haskell
- 21. Pascal和C語言
- 22. 如何在PHP中使用gettext加載語言?
- 23. 如何在「生產」中重新加載語言文件
- 24. 如何在JavaFX中更改語言時重新加載屏幕?
- 25. 如何在應用程序中加載語言文件(ios swift)
- 26. 如何從C++中的語言ID獲取語言名稱?
- 27. 如何使用swift語言在OS X中下載圖像
- 28. 如何在GO語言中增加地圖的分配大小?
- 29. 如何根據多語言插件的選定語言加載不同的header.php?
- 30. C語言簡介:添加和打印
爲什麼你想在C++中使用C API而不是本地C++ [庫](https://www.tensorflow.org/api_docs/cc/namespace/tensorflow#readbinaryproto)? –
實際上,我想用tensorflow的C++ api來加載tensorflow項目之外的圖表 –