C++tensorflow 튜 토리 얼 호출

4333 단어 c + +tensorflow
현재 심도 있 는 학습 이 갈수 록 뜨 거 워 지고 있 으 며,tensorflow 를 배우 고 사용 하 는 관계자 도 갈수 록 많아 지고 있다.그러나 현재 대부분의 python 은 python 의 API 가 풍부 하고 c++의 API 가 완선 되 지 않 습 니 다.이 로 인해 텐 서 플 로 우 를 사용 하 는 프로젝트 는 대부분 python 을 기반 으로 합 니 다.
프로젝트 가 c++로 작 성 된 것 이 라면 python 의 tensor flow 를 호출 하 시 겠 습 니까?본 튜 토리 얼 참조(tensorflow 모델 은 CNN 볼 륨 신경 망)
구체 적 인 절차:
1.python 환경
먼저 python 을 설치 하면 Anaconda 홈 페이지 에서 직접 다운로드 할 수 있 습 니 다.python 은 반드시 64bit 를 선택해 야 한 다 는 것 을 기억 하 세 요.현재 tensor flow 는 32 비트 의 python 을 지원 하지 않 습 니 다.이것 도 제 가 이전에 구 덩이 를 당 한 곳 입 니 다.Anaconda 다운로드 후 바로

bash Anaconda3-4.3.1-Linux-x86_64.sh
설치 할 수 있 습 니 다.그리고...

gedit ~/.bashrc
맨 뒤에.

export PATH=/<  anaconda  >/bin:$PATH
python 설치 경 로 를 시스템 경로 에 추가 합 니 다.이렇게 하면 터미널 에서 python 을 두 드 린 후에 설 치 된 python 3.6 을 실행 합 니 다.다음 그림 에서 보 듯 이 설치 성공 을 의미 합 니 다.

2.tensorflow
직접 터미널 입력:pip install tensorflow자동 으로 python 에 설치 해 드릴 게 요.
'일치 하 는 버 전 을 찾 지 못 했 습 니 다'(또는 빨간색 영어 힌트)와 같은 버 전이 나타 나 면 python 32bit 버 전 으로 설치 할 수 있 습 니 다.tensor flow 는 당분간 지원 되 지 않 습 니 다!
설치 성공 후 터미널 에서 다음 작업 을 수행 합 니 다:

tensorflow 버 전 을 표시 합 니 다.설치 성공 을 표시 합 니 다!
3.C++Demo
간단 한 c++python+tensor flow 의 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";  //       py      
  pMod = PyImport_ImportModule(modulName); 
  if(!pMod)
  {
    return -1;
  }
  char* funcName="evaluate"; //   py             
  pFunc = PyObject_GetAttrString(pMod, funcName); 
  if(!pFunc) 
  {  
    return -2; 
  } 
  pParm = PyTuple_New(1);
  PyTuple_SetItem(pParm, 0, Py_BuildValue("s",picpath));//     ,      
  pRetVal = PyEval_CallObject(pFunc, pParm);//      py  
  PyArg_Parse(pRetVal, "i", &iRetVal);//py      iRetVal
  //PyErr_Print();
  std::cout<<iRetVal;
  return iRetVal;
}
4.tensorflow 의 python 스 크 립 트
기본적으로 tensor flow 의 python 스 크 립 트 를 썼 고 성공 할 수 있 습 니 다.(tensorflow 의 사용 은 본문의 중점 이 아니다)
c++호출 해 야 할 것 은 바로 이 classify.py 의 evaluate 함수 입 니 다.그림 경 로 를 입력 하고 분류 결 과 를 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():
               ,  ,  prediction……
      max_index = np.argmax(prediction)
      return max_index
5.c+python 스 크 립 트 를 호출 하 는 환경
이 럴 때 는 간단 한 Makefile 가입 에 필요 한 의존 환경 을 써 야 합 니 다.예 를 들 어 c+코드 첫 줄 의 Python.h 와 관련 된 라 이브 러 리 파일 입 니 다.
간단 한 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/anaconda 3/include/python 3.6m 필요 한 Python.h;-필요 한 libpython 3.6m.so 로 연결 하기;-L 은 링크 의 경 로 를 가리킨다.
터미널 입력 make.libpython 3.6m.so 가 필요 하 다 면/home/pdd/anaconda 3/lib 의 libpython 3.6m.so 를/usr/lib/하(sudo cp―C)로 복사 하 십시오.
이 때 다시 make 를 입력,모든 ok!out 파일 을 가 져 와 서./out 을 입력 하 십시오.결 과 는 다음 과 같 습 니 다.

결 과 를 얻다퀘 스 트 완성!
총결산
이상 은 이 글 의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가 치 를 가지 기 를 바 랍 니 다.여러분 의 저희 에 대한 지지 에 감 사 드 립 니 다.더 많은 내용 을 알 고 싶다 면 아래 링크 를 보 세 요.

좋은 웹페이지 즐겨찾기