久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

Tensorflow 在 C++ 中導(dǎo)出和運(yùn)行圖的不同方式

Tensorflow Different ways to Export and Run graph in C++(Tensorflow 在 C++ 中導(dǎo)出和運(yùn)行圖的不同方式)
本文介紹了Tensorflow 在 C++ 中導(dǎo)出和運(yùn)行圖的不同方式的處理方法,對(duì)大家解決問(wèn)題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!

問(wèn)題描述

要將經(jīng)過(guò)訓(xùn)練的網(wǎng)絡(luò)導(dǎo)入 C++,您需要導(dǎo)出網(wǎng)絡(luò)才能執(zhí)行此操作.在搜索了很多并且?guī)缀鯖](méi)有找到關(guān)于它的信息之后,澄清我們應(yīng)該使用 freeze_graph() 能夠做到這一點(diǎn).

For importing your trained network to the C++ you need to export your network to be able to do so. After searching a lot and finding almost no information about it, it was clarified that we should use freeze_graph() to be able to do it.

感謝 Tensorflow 的新 0.7 版本,他們添加了 文檔.

Thanks to the new 0.7 version of Tensorflow, they added documentation of it.

查看文檔后發(fā)現(xiàn)類似的方法很少,你能說(shuō)一下freeze_graph()和:tf.train.export_meta_graph 因?yàn)樗蓄愃频膮?shù),但它似乎也可以用于將模型導(dǎo)入 C++(我只是猜測(cè)不同之處在于,對(duì)于使用這種方法輸出的文件,您只能使用 import_graph_def() 還是別的什么?)

After looking into documentations, I found that there are few similar methods, can you tell what is the difference between freeze_graph() and: tf.train.export_meta_graph as it has similar parameters, but it seems it can also be used for importing models to C++ (I just guess the difference is that for using the file output by this method you can only use import_graph_def() or it's something else?)

還有一個(gè)關(guān)于如何使用 write_graph() 的問(wèn)題:在文檔中,graph_defsess.graph_def 給出,但在 freeze_graph() 的例子中,它是 sess.graph.as_graph_def().這兩者有什么區(qū)別?

Also one question about how to use write_graph(): In documentations the graph_def is given by sess.graph_def but in examples in freeze_graph() it is sess.graph.as_graph_def(). What is the difference between these two?

這個(gè)問(wèn)題與這個(gè)問(wèn)題有關(guān).

謝謝!

推薦答案

這是我利用 TF 0.12 中引入的 V2 檢查點(diǎn)的解決方案.

Here's my solution utilizing the V2 checkpoints introduced in TF 0.12.

無(wú)需將所有變量轉(zhuǎn)換為常量或凍結(jié)圖表.

There's no need to convert all variables to constants or freeze the graph.

為了清楚起見(jiàn),我的目錄 models 中的 V2 檢查點(diǎn)如下所示:

Just for clarity, a V2 checkpoint looks like this in my directory models:

checkpoint  # some information on the name of the files in the checkpoint
my-model.data-00000-of-00001  # the saved weights
my-model.index  # probably definition of data layout in the previous file
my-model.meta  # protobuf of the graph (nodes and topology info)

Python 部分(保存)

with tf.Session() as sess:
    tf.train.Saver(tf.trainable_variables()).save(sess, 'models/my-model')

如果您使用 tf.trainable_variables() 創(chuàng)建 Saver,您可以節(jié)省一些頭痛和存儲(chǔ)空間.但也許一些更復(fù)雜的模型需要保存所有數(shù)據(jù),然后將此參數(shù)刪除到 Saver,只需確保您正在創(chuàng)建 Saver after> 您的圖表已創(chuàng)建.給所有變量/層賦予唯一的名稱也是非常明智的,否則你可能會(huì)遇到不同的問(wèn)題.

If you create the Saver with tf.trainable_variables(), you can save yourself some headache and storage space. But maybe some more complicated models need all data to be saved, then remove this argument to Saver, just make sure you're creating the Saver after your graph is created. It is also very wise to give all variables/layers unique names, otherwise you can run in different problems.

Python 部分(推理)

with tf.Session() as sess:
    saver = tf.train.import_meta_graph('models/my-model.meta')
    saver.restore(sess, tf.train.latest_checkpoint('models/'))
    outputTensors = sess.run(outputOps, feed_dict=feedDict)

C++ 部分(推理)

請(qǐng)注意,checkpointPath 不是任何現(xiàn)有文件的路徑,只是它們的公共前綴.如果您錯(cuò)誤地放置了 .index 文件的路徑,TF 不會(huì)告訴您這是錯(cuò)誤的,但是由于未初始化的變量,它會(huì)在推理過(guò)程中死亡.

Note that checkpointPath isn't a path to any of the existing files, just their common prefix. If you mistakenly put there path to the .index file, TF won't tell you that was wrong, but it will die during inference due to uninitialized variables.

#include <tensorflow/core/public/session.h>
#include <tensorflow/core/protobuf/meta_graph.pb.h>

using namespace std;
using namespace tensorflow;

...
// set up your input paths
const string pathToGraph = "models/my-model.meta"
const string checkpointPath = "models/my-model";
...

auto session = NewSession(SessionOptions());
if (session == nullptr) {
    throw runtime_error("Could not create Tensorflow session.");
}

Status status;

// Read in the protobuf graph we exported
MetaGraphDef graph_def;
status = ReadBinaryProto(Env::Default(), pathToGraph, &graph_def);
if (!status.ok()) {
    throw runtime_error("Error reading graph definition from " + pathToGraph + ": " + status.ToString());
}

// Add the graph to the session
status = session->Create(graph_def.graph_def());
if (!status.ok()) {
    throw runtime_error("Error creating graph: " + status.ToString());
}

// Read weights from the saved checkpoint
Tensor checkpointPathTensor(DT_STRING, TensorShape());
checkpointPathTensor.scalar<std::string>()() = checkpointPath;
status = session->Run(
        {{ graph_def.saver_def().filename_tensor_name(), checkpointPathTensor },},
        {},
        {graph_def.saver_def().restore_op_name()},
        nullptr);
if (!status.ok()) {
    throw runtime_error("Error loading checkpoint from " + checkpointPath + ": " + status.ToString());
}

// and run the inference to your liking
auto feedDict = ...
auto outputOps = ...
std::vector<tensorflow::Tensor> outputTensors;
status = session->Run(feedDict, outputOps, {}, &outputTensors);

這篇關(guān)于Tensorflow 在 C++ 中導(dǎo)出和運(yùn)行圖的不同方式的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

【網(wǎng)站聲明】本站部分內(nèi)容來(lái)源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問(wèn)題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請(qǐng)聯(lián)系我們刪除處理,感謝您的支持!

相關(guān)文檔推薦

Assertion failed (size.widthgt;0 amp;amp; size.heightgt;0)(斷言失敗(size.width0 amp;amp; size.height0))
Rotate an image in C++ without using OpenCV functions(在 C++ 中旋轉(zhuǎn)圖像而不使用 OpenCV 函數(shù))
OpenCV: process every frame(OpenCV:處理每一幀)
Why can#39;t I open avi video in openCV?(為什么我不能在 openCV 中打開(kāi) avi 視頻?)
OpenCV unable to set up SVM Parameters(OpenCV 無(wú)法設(shè)置 SVM 參數(shù))
Convert a single color with cvtColor(使用 cvtColor 轉(zhuǎn)換單一顏色)
主站蜘蛛池模板: 中文字幕av色 | 在线观看av网站 | 亚洲色图综合 | 精品在线观看入口 | 999精品视频 | 亚洲国产一区二区在线 | 欧美bondage紧缚视频 | 中文在线а√在线8 | 久久精品国产亚洲夜色av网站 | 欧美日韩网站 | 亚洲精品在线观看视频 | 免费一级淫片aaa片毛片a级 | 一区二区日韩 | 国产成人精品一区二区三区 | 亚洲精品一区二区 | 国产免费视频在线 | 久久久爽爽爽美女图片 | 欧美黄色小视频 | 久久亚洲一区二区 | av一级久久| 成人av免费看 | 天天久久 | 午夜免费影视 | 黑人粗黑大躁护士 | 一区二区三区视频在线 | 亚洲精品456 | 久久久久久久久久毛片 | 亚洲视频国产视频 | 99精品视频在线观看 | 亚洲高清视频在线观看 | 国产精品毛片无码 | 久久久国产视频 | 成人免费黄视频 | 性一交一乱一透一a级 | 自拍偷拍精品 | www.国产91 | 午夜视频一区 | 天堂va在线观看 | 色资源在线视频 | 午夜国产在线 | 日本激情视频网 |