最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

使用TensorFlow的C++接口

2022-02-22 20:09 作者:紀(jì)一希  | 我要投稿

之前編譯的是python package,然后我在docs項(xiàng)目下找教程找不著,直接在里面搜了一下hello world,意外的看到了 docs/site/en/r1/guide/extend/cc.md

這篇講的是直接調(diào)用tf的c++接口,很明顯更符合我的需求,于是我就按照這篇操作了一下。


按教程里面說(shuō)的,這是一個(gè)依賴tensorflow項(xiàng)目本體的bazel編譯的方式,并非把它當(dāng)成了純粹的第三方庫(kù),目前還符合我的需要,而且操作很簡(jiǎn)單,于是就先按這個(gè)方式操作。

首先在源碼文件夾創(chuàng)建 tensorflow/cc/example/example.cc,然后把md里面的代碼直接貼進(jìn)去,接下來(lái)在相同的位置放一個(gè)BUILD文件,把下面那段再貼進(jìn)去,準(zhǔn)備工作就完成了。

接下來(lái)在源碼根目錄跑(這份源碼要運(yùn)行過(guò)./configure,用的是之前的devel docker)

等他自己編譯完成就好了。

如果從零開(kāi)編的話,相對(duì)于pip_package只需要花三分之一的時(shí)間。


===== 其實(shí)到這兒就結(jié)束了,接下來(lái)都是我踩的坑。 =====

這次吸取了教訓(xùn),人家的文檔寫(xiě)的明明白白的!!一定要逐行閱讀!!

我看到這份c++代碼就頭腦一熱自己拿去編譯,鼓搗了半天,只在解壓后的whl包里搞到了include頭文件,但即使把whl里所有的so都link上去依舊顯示有undefined reference。

無(wú)奈之下我又在源碼文件夾里搜索"libtensorflow"出現(xiàn)的位置,意外的看到了這么幾個(gè)文件

簡(jiǎn)單看一下得出這三個(gè)是從下到上引用的關(guān)系,直接運(yùn)行第三個(gè)腳本即可,然而并不能成功,報(bào)錯(cuò)顯示找不到cuda,可我明明要編譯的是cpu版本,中間打了個(gè)日志也確定它判斷出的SUFFIX值的確是“-cpu-linux-”,可是編譯的命令里還是可以搜索到"-gpu"等等,我懷疑這個(gè)腳本并不能直接調(diào)用,還是需要依賴bazel,就像build_pip_package其實(shí)也是個(gè)shell腳本,由bazel管理了依賴,直接調(diào)用會(huì)缺少一些環(huán)境變量之類(lèi)的??墒谴a里沒(méi)搜到哪個(gè)BUILD文件里有cpu_libtensorflow。


接下來(lái)是個(gè)大坑,有一個(gè)很類(lèi)似我要找的東西

里面提供了編譯出libtensorflow.tar.gz的功能,不管怎么看都是我需要的東西,于是我興高采烈的編譯了起來(lái),這次到?jīng)]有報(bào)錯(cuò),我卻發(fā)現(xiàn)它從頭開(kāi)始編譯了,當(dāng)時(shí)我就抱怨這bazel怎么這么蠢,換個(gè)target它就不能復(fù)用一下,就這樣又等了8h。

得到的tar.gz解壓一看,里面有兩個(gè)文件夾,include和lib,非常完美,拉去編譯,又不行,打開(kāi)一看,這include里雖然有一堆頭文件,但是跟源碼里的結(jié)構(gòu)都不沾邊兒。

根據(jù)include/tensorflow/cc/c_api.h的注釋,這一套接口甚至全是以TF_開(kāi)頭的,肯定不是我需要的東西,干脆放棄了這條路。

中間我又按下了build_pip_package,過(guò)了幾秒鐘就后悔了,既然都要從頭編譯,我應(yīng)該新開(kāi)個(gè)文件夾,萬(wàn)一這個(gè)lib_package以后需要呢,于是我把它掐了之后,抱著試一試的心態(tài)又重編了libtensorflow.tar.gz,意外發(fā)現(xiàn)兩分鐘就編好了,這時(shí)我才想到,其實(shí)bazel不蠢,大概是因?yàn)楹甑膯?wèn)題導(dǎo)致它確實(shí)是需要觸發(fā)集體重編的。這更加印證了我根本不需要這個(gè)lib_package。


還有個(gè)很蠢的文檔問(wèn)題。不知道為什么科學(xué)上網(wǎng)之后依舊打不開(kāi)官網(wǎng)文檔,當(dāng)時(shí)感覺(jué)我們?cè)獾搅思夹g(shù)封鎖...

docs下的md我還知道怎么看,但是還有一類(lèi)ipynb的文件,打開(kāi)一看全是類(lèi)似json的東西,一般我就直接關(guān)上了,以為是配置文件之類(lèi)的用于編譯文檔的,后來(lái)才想到干嘛不搜一下呢,一搜才想起這原來(lái)是notebook的格式,裝一個(gè)jupyter notebook就能看了,然后根據(jù) docs/site/en/guide/_toc.yaml,就可以知道文檔的閱讀順序,當(dāng)時(shí)興奮的覺(jué)得自己有了重大突破。

后來(lái)突然在想,這東西咋沒(méi)人研究呢,害我搗鼓半天(因?yàn)橹虚g研究了下怎么把文檔編譯出來(lái),發(fā)現(xiàn)根本沒(méi)人提這茬),后來(lái)我突然想到干嘛不直接百度呢,百度一搜,焯,原來(lái)是官網(wǎng)文檔的地址變了,tensorflow.org是死活打不開(kāi)的,但是tensorflow.google.cn甚至直接就能打開(kāi),流暢的一匹,感覺(jué)這波叫做聰明反被聰明誤,不知道為什么用他們自家搜索網(wǎng)站搜出來(lái)的都是老地址。


最后的最后我才好好讀了一下最開(kāi)頭的cc.md,發(fā)現(xiàn)自己凈瞎走彎路,實(shí)在是太蠢了。

使用TensorFlow的C++接口的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
拜城县| 鄂伦春自治旗| 庆城县| 文登市| 中江县| 合水县| 普陀区| 年辖:市辖区| 临漳县| 连南| 甘泉县| 来宾市| 色达县| 沁阳市| 介休市| 迭部县| 平山县| 华蓥市| 郓城县| 四子王旗| 秀山| 佳木斯市| 邳州市| 元江| 武鸣县| 柘荣县| 琼中| 双鸭山市| 应城市| 临汾市| 廉江市| 内丘县| 中牟县| 治县。| 吉林省| 怀集县| 涞源县| 福鼎市| 兴仁县| 故城县| 崇义县|