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 ...
随机推荐
- Dialog 对话框
在保留当前页面状态的情况下,告知用户并承载相关操作. 基本用法 Dialog 弹出一个对话框,适合需要定制性更大的场景. 需要设置visible属性,它接收Boolean,当为true时显示 Dial ...
- Java Web开发中路径问题小结(getRequestUrl getContextUrl getServletUrl)
看以博客感觉不错,分享一下http://www.cnblogs.com/tianguook/archive/2012/08/31/2665755.html (1) Web开发中路径的几个基本概念 假设 ...
- Hadoop完全分布式安装配置完整过程
一. 硬件.软件准备 1. 硬件设备 为了方便学习Hadoop,我采用了云服务器来配置Hadoop集群.集群使用三个节点,一个阿里云节点.一个腾讯云节点.一个华为云节点,其中阿里云和腾讯云都是通过使用 ...
- etcd安全集群三节点扩容至四个节点
规划:先安装三台组建集群,然后扩容一个安全节点进来 .环境: 三台centos7. 主机 192.168.0.91 192.168.0.92 192.168.0.93 都关闭防火墙 都关闭selinu ...
- [LeetCode] Top 100 Liked Questions
[LeetCode] Top 100 Liked Questions # Title Acceptance Difficulty 1 Two Sum 38.80% Easy 2 Add Two Num ...
- JavaScript基础入门10
目录 JavaScript 基础入门10 正则表达式 为什么使用正则表达式? 正则表达式的应用场景 如何创建一个正则表达式 基础语法 具有特殊意义的转义字符 量词 字符类 贪婪模式 练习 邮箱验证 中 ...
- 如何使用StarUML for Mac创建和修改元素
StarUML for Mac是一款UML软件建模器,支持快速编辑中的许多缩写,一次创建元素和关系,如子类,支持接口等.如何使用StarUML for Mac创建和修改元素?下面我们来介绍一下. 如何 ...
- Goland 开发插件安装
goland 是一款非常优秀的开发工具,默认打开后,发白的开发界面,也是异常刺眼.但是 Goland 为我们准备了很多插件,要优先安装这些插件,打造适合自己的开发界面. 我自己的设置的主题界面如下: ...
- 【HANA系列】【第二篇】SAP HANA XS使用JavaScript编程详解
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列][第二篇]SAP HANA XS ...
- svn修改代码URL整合路径
我们平常开发的代码都是在A服务器上整合的,最近A服务器突然无法访问了,所以今天我们更换了一下服务器.svn如何安装的就不说了,这里只介绍一下如何更换SVN URL的. 在你拿到URL后,在工作文件夹下 ...