最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++調(diào)用tensorflow教程

 更新時間:2018年10月16日 12:05:31   作者:Panda_Peng  
今天小編就為大家分享一篇關(guān)于C++調(diào)用tensorflow教程,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

目前深度學習越來越火,學習、使用tensorflow的相關(guān)工作者也越來越多。但是目前絕大部分的python都是擁有著豐富的python的API,而c++的API不夠完善。這就導致絕大多是使用tensorflow的項目都是基于python。

如果項目是由c++編寫,想調(diào)用python下的tensorflow?可參考本教程(tensorflow模型是CNN卷積神經(jīng)網(wǎng)絡(luò))

具體步驟:

1.python環(huán)境

首先安裝python,可以在Anaconda官網(wǎng)直接下載。記住python一定選擇64bit,目前tensorflow不支持32位的python,這也是我之前被坑過的地方。下載Anaconda后直接

bash Anaconda3-4.3.1-Linux-x86_64.sh

就可以安裝,然后

gedit ~/.bashrc

在最后面加上

export PATH=/<你的anaconda路徑>/bin:$PATH

將python安裝路徑添加到系統(tǒng)路徑中,這樣在終端敲python后會運行安裝的python3.6,如下圖所示,代表安裝成功:

2.tensorflow

直接終端輸入:

pip install tensorflow

就會自動幫你安裝到python下。
如果出現(xiàn)類似“沒有找到匹配版本”(或者紅色英文提示),那么你可能裝的是python32bit版本,暫時不支持tensorflow!
安裝成功后在終端如下操作:

顯示tensorflow版本,表示安裝成功!

3.C++Demo

一個簡單的c++調(diào)取python+tensorflow的demo,按照實際需要可以依葫蘆畫瓢。

#include <Python.h>
#include <iostream>
int main(int argc, char** argv)
{
  char* picpath ="/home/pdd/PD/c++/c++python/pic/0.0.jpg";
  Py_Initialize(); 
    if ( !Py_IsInitialized() ) { 
    return -1; 
    } 
    PyRun_SimpleString("import sys");
    PyRun_SimpleString("sys.path.append('./')");
  PyObject* pMod = NULL;
  PyObject* pFunc = NULL;
  PyObject* pParm = NULL;
  PyObject* pRetVal = NULL;
  int iRetVal = -999;
  char* modulName="classify";  //這個是被調(diào)用的py文件模塊名字
  pMod = PyImport_ImportModule(modulName); 
  if(!pMod)
  {
    return -1;
  }
  char* funcName="evaluate"; //這是此py文件模塊中被調(diào)用的函數(shù)名字
  pFunc = PyObject_GetAttrString(pMod, funcName); 
  if(!pFunc) 
  {  
    return -2; 
  } 
  pParm = PyTuple_New(1);
  PyTuple_SetItem(pParm, 0, Py_BuildValue("s",picpath));//傳入的參數(shù),是圖片的路徑
  pRetVal = PyEval_CallObject(pFunc, pParm);//這里開始執(zhí)行py腳本
  PyArg_Parse(pRetVal, "i", &iRetVal);//py腳本返回值給iRetVal
  //PyErr_Print();
  std::cout<<iRetVal;
  return iRetVal;
}

4.tensorflow的python腳本

默認你已經(jīng)寫好tensorflow的python腳本,并能跑成功。(tensorflow的使用不是本文重點)
c++需要調(diào)用的就是這個classify.py里面的evaluate函數(shù),傳入圖片路徑,返回分類結(jié)果給c++程序。

from PIL import Image
import numpy as np
import tensorflow as tf
def evaluate(pic):
  image = Image.open(pic)
  image = image.resize([256, 256])
  image_array = np.array(image)
  with tf.Graph().as_default():
    里面就是對圖像讀取模型,預(yù)測,得到prediction……
      max_index = np.argmax(prediction)
      return max_index

5.c++調(diào)用python腳本的環(huán)境

這時候需要寫一個簡單的makefile加入需要的依賴環(huán)境。例如c++代碼第一行的Python.h和相關(guān)的庫文件。
簡單的makefile如下:

main:c++python.cpp
  g++ -o out c++python.cpp -I/home/pdd/anaconda3/include/python3.6m -lpython3.6m -L /home/pdd/anaconda3/lib
clean:
  rm -rf *.o 

-I后面的/home/pdd/anaconda3/include/python3.6m有需要的Python.h;-lpython3.6m鏈接到需要的libpython3.6m.so;-L指出鏈接的路徑。

終端輸入make。如果提示需要什么libpython3.6m..so,就把/home/pdd/anaconda3/lib下的libpython3.6m..so復制到/usr/lib/下(sudo cp ——–)

此時再次輸入make,一切ok!得到out文件,輸入./out,結(jié)果如下:

得到結(jié)果0。任務(wù)完成!

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

相關(guān)文章

  • 如何在C語言中提取Shellcode并執(zhí)行

    如何在C語言中提取Shellcode并執(zhí)行

    Shellcode是一種獨立于應(yīng)用程序的機器代碼,通常用于實現(xiàn)特定任務(wù),如執(zhí)行遠程命令、注入惡意軟件或利用系統(tǒng)漏洞,本文將深入探討如何在C語言中提取Shellcode,并通過XOR加密技術(shù)增加其混淆程度,文中通過代碼示例講解的非常詳細,需要的朋友可以參考下
    2023-12-12
  • C/C++ Qt QChart繪圖組件的具體使用

    C/C++ Qt QChart繪圖組件的具體使用

    QtCharts 組件是QT中提供圖表繪制的模塊,用來繪制常規(guī)圖形,本文就詳細的介紹了QChart的使用,以及柱狀圖,折線圖等常用的圖形的實現(xiàn),感興趣的可以了解一下
    2021-11-11
  • C++實現(xiàn)動態(tài)分配const對象實例

    C++實現(xiàn)動態(tài)分配const對象實例

    這篇文章主要介紹了C++實現(xiàn)動態(tài)分配const對象實例,包括了const對象的創(chuàng)建、刪除及應(yīng)用實例,需要的朋友可以參考下
    2014-10-10
  • C++算法學習之貪心算法的應(yīng)用

    C++算法學習之貪心算法的應(yīng)用

    貪心算法是指,在對問題求解時,總是做出在當前看來是最好的選擇。本文為大家準備了幾個示例,從而能深入了解貪心算法的應(yīng)用,需要的可以參考一下
    2022-05-05
  • 一篇文章帶你了解C語言二分查找

    一篇文章帶你了解C語言二分查找

    這篇文章主要為大家詳細介紹了C語言二分查找法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Qt實現(xiàn)界面滑動切換效果的思路詳解

    Qt實現(xiàn)界面滑動切換效果的思路詳解

    這篇文章主要介紹了Qt實現(xiàn)界面滑動切換效果,主要包括設(shè)計思路及主要函數(shù)講解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • Qt實現(xiàn)文件的壓縮和解壓縮操作

    Qt實現(xiàn)文件的壓縮和解壓縮操作

    這篇文章主要為大家詳細介紹了如何使用Qt庫中的QZipReader和QZipWriter實現(xiàn)文件的壓縮和解壓縮功能,文中的示例代碼簡潔易懂,需要的可以參考一下
    2024-12-12
  • C++中不得不說的map容器

    C++中不得不說的map容器

    大家好,本篇文章主要講的是C++中不得不說的map容器,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • C語言實現(xiàn)三子棋游戲(初級版)

    C語言實現(xiàn)三子棋游戲(初級版)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)三子棋游戲初級版,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • C++預(yù)定義的流對象基本示例詳解

    C++預(yù)定義的流對象基本示例詳解

    這篇文章主要為大家介紹了C++預(yù)定義的流對象基本示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04

最新評論

呼伦贝尔市| 安徽省| 阳原县| 武城县| 平远县| 海淀区| 日照市| 榆社县| 扬中市| 雅江县| 岳池县| 山阳县| 巫山县| 安宁市| 淄博市| 泌阳县| 内江市| 兴义市| 政和县| 淮北市| 仙游县| 平谷区| 醴陵市| 津市市| 安溪县| 澄迈县| 乌兰县| 莱州市| 平凉市| 资中县| 凉山| 茂名市| 商河县| 澄城县| 清丰县| 高雄市| 巴中市| 阳原县| 信丰县| 大新县| 萨嘎县|