Tensorflow模型移植Arm之一:C与Python互相调用
一、C调用Python
1.新建一个Python文件,名称为py_multipy.py:
#import numpy as np
def multiply(a=1,b=2):
print('Function of python called!')
print('a:',a)
print('b:',b)
print('a*b:',a*b)
#print('numpy a*b:',np.multiply(a,b))
2.新建一个C调用文件,名称为call_python.c
#include <stdio.h>
#include <stdlib.h>
#include <Python.h> int main()
{
Py_Initialize(); if(!Py_IsInitialized())
{
printf("Python init failed!\n");
return -;
} PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append('./')"); PyObject *pDict = NULL;
PyObject *pModule = NULL;
PyObject *pName = NULL;
PyObject *pFunc = NULL;
PyObject *pArgs = NULL; pName = PyString_FromString("py_add");
pModule = PyImport_Import(pName);
if (!pModule)
{
printf("Load py_add.py failed!\n");
getchar();
return -;
} pDict = PyModule_GetDict(pModule);
if(!pDict)
{
printf("Can't find dict in py_add!\n");
return -;
} pFunc = PyDict_GetItemString(pDict,"add");
if(!pFunc || !PyCallable_Check(pFunc))
{
printf("Can't find function!\n");
getchar();
return -;
} pArgs = PyTuple_New(); PyTuple_SetItem(pArgs,,Py_BuildValue("i",));
PyTuple_SetItem(pArgs,,Py_BuildValue("i",)); PyObject_CallObject(pFunc,pArgs); if(pName)
{
Py_DECREF(pName);
} if(pArgs)
{
Py_DECREF(pArgs);
} if(pModule)
{
Py_DECREF(pModule);
} Py_Finalize();
return ; }
3.编译C文件
gcc -I/usr/include/python2.7/ call_python.c -o call_python -L/usr/lib/ -lpython2.7
在当前目录下生成可执行文件call_python
4.执行新生成的文件:./call_python
显示结果如下:
Function of python called!
('a:',111)
('b:',222)
('a*b:',333)
二、Python调用C
1.新建一个pcallc.c
#include <stdio.h>
#include <pcallc.h> int add(int a,int b)
{
int c= ;
c = a+b;
printf("add c:",c);
return c;
}
2.新建一个pcallc.h
#ifndef PCALLC_H
#define PCALLC_H int add(); #endif
3.生成动态库:pcallc.so
gcc -o pcallc.so -shared -fPIC pcallc.c
4.新建pcallc.py
#-*- coding:utf-8 -*- import ctypes loadso = ctypes.cdll.LoadLibrary
lib= loadso("./pcallc.so")
lib.add(1,2) print("***finish***")
5.运行pcallc.py
python pcallc.py
add c:3
finish!
Tensorflow模型移植Arm之一:C与Python互相调用的更多相关文章
- 将训练好的tensorflow模型移植到android应用中
具体步骤如下: 1. TFLiteConverter保存模型 修改网络模型代码,将模型通过TFLiteConverter转化成为 TensorFlow Lite FlatBuffer即为.tflit ...
- tensorflow初次接触记录,我用python写的tensorflow第一个模型
tensorflow初次接触记录,我用python写的tensorflow第一个模型 刚用python写的tensorflow机器学习代码,训练60000张手写文字图片,多层神经网络学习拟合17000 ...
- [翻译] Tensorflow模型的保存与恢复
翻译自:http://cv-tricks.com/tensorflow-tutorial/save-restore-tensorflow-models-quick-complete-tutorial/ ...
- Tensorflow模型的格式
转载:https://cloud.tencent.com/developer/article/1009979 tensorflow模型的格式通常支持多种,主要有CheckPoint(*.ckpt).G ...
- 移动端目标识别(2)——使用TENSORFLOW LITE将TENSORFLOW模型部署到移动端(SSD)之TF Lite Developer Guide
TF Lite开发人员指南 目录: 1 选择一个模型 使用一个预训练模型 使用自己的数据集重新训练inception-V3,MovileNet 训练自己的模型 2 转换模型格式 转换tf.GraphD ...
- 搭建 MobileNet-SSD 开发环境并使用 VOC 数据集训练 TensorFlow 模型
原文地址:搭建 MobileNet-SSD 开发环境并使用 VOC 数据集训练 TensorFlow 模型 0x00 环境 OS: Ubuntu 1810 x64 Anaconda: 4.6.12 P ...
- 一份快速完整的Tensorflow模型保存和恢复教程(译)(转载)
该文章转自https://blog.csdn.net/sinat_34474705/article/details/78995196 我在进行图像识别使用ckpt文件预测的时候,这个文章给我提供了极大 ...
- TensorFlow模型保存和加载方法
TensorFlow模型保存和加载方法 模型保存 import tensorflow as tf w1 = tf.Variable(tf.constant(2.0, shape=[1]), name= ...
- 使用tensorflow-serving部署tensorflow模型
使用docker部署模型的好处在于,避免了与繁琐的环境配置打交道.使用docker,不需要手动安装Python,更不需要安装numpy.tensorflow各种包,直接一个docker就包含了全部.d ...
随机推荐
- debian系统安装vsftpd服务端和ftp客户端
一.服务器安装和配置 1.安装vsftpd.(此处切换到su权限下了.其它用户请使用sudo权限,没有sudo权限的看前面的教程进行安装) apt-get install vsftpd 2.配置vsf ...
- python数据存储-- CSV
CSV,其文件以纯文本形式存储表格数据(数字和文本),CSV记录简由某种换行符分隔字段间分隔又其他字符,常见逗号或者制表符, 例如: #coding:utf-8 import csv headers ...
- /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.15' not found错误的解决 转载
升级cmake时,提示“Error when bootstrapping CMake:Problem while running initial CMake”,第二次运行./bootstrap时,直接 ...
- 《Visual Studio程序员箴言》笔记
还记得刚工作时看到某前辈用快捷键操作Visual Studio,赞叹不已,才发觉原来快捷键熟练了效率可以如此之高.后来,我在为一个经常使用的命令添加快捷键的时候又发现Visual Studio的快捷键 ...
- LeetCode.1071-字符串最大公约数(Greatest Common Divisor of Strings)
这是小川的第391次更新,第421篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第253题(顺位题号是1071).对于字符串S和T,当且仅当S = T + ... + T ...
- JAVA第四周总结
Java实验报告二 第一题 写一个名为Rectangle的类表示矩形.其属性包括宽width.高height和颜色color,width和height都是double型的,而color则是String ...
- Java小知识----POI事件模式读取Excel 2007
一.知识背景 1.读取excel的方法选择问题 java中读excel中的时间,我们通常用POI去解析,在使用new HSSFWorkbook(NEW FileInputStream(excelFil ...
- 大型软件公司.Net面试常见题(含答案)
1.a=10,b=15,在不用第三方变量的前提下,吧a.b互换 2.已知数组int[] max={6,5,2,9,7,4,0};用快速排序算法按降序对其进行排列,并返回数组 3.请简述面向对象的多态的 ...
- # 「NOIP2010」关押罪犯(二分图染色+二分答案)
「NOIP2010」关押罪犯(二分图染色+二分答案) 洛谷 P1525 描述:n个罪犯(1-N),两个罪犯之间的仇恨值为c,m对仇恨值,求怎么分配使得两件监狱的最大仇恨值最小. 思路:使最大xxx最小 ...
- CSP 画图(201512-3)
问题描述 用 ASCII 字符来画图是一件有趣的事情,并形成了一门被称为 ASCII Art 的艺术.例如,下图是用 ASCII 字符画出来的 CSPRO 字样. ..____.____..____. ...