若是要作一个文档糟糕排行榜的话,对mxnet
来讲,会是一个好消息。由于他们有了垫背者——Boost,具体点是Boost.Python
(其它子块还没怎么用很差评)。实际上,对比起来看,mxnet的文档能够称为杰做。。。从原理,到函数说明,到例子;再看看这位,简直就是xxxx。描述没有,例子没有,还要问原理?光是用在侦查怎么编译出来运行的工做,投入的脑细胞工做时均可以在兆亿亿亿亿亿亿亿亿亿亿亿级别。多的不说,看看官方文档的sht-style吧\weixiao(前方高能预警)。html
可是有什么办法,谁叫人家牛呀,骂完了还得接着干。numpy
接口几乎就是我用python接口的惟一理由(否则就是在做死)。因此很关键,但这方面能找到的资料有些少(其余人都是怎么作的...)发现一个Boost.Python
的扩展版用以支持numpy
,但后面发现已经在去年被废弃了,说是合到了官方主线上(\tuxie),因而又只好跪求这官方文档。
最终仍是没期望上,处处拼接了一些,程序才算运行上(也是碎了一地),放这吧。python
// test.cpp #include<boost/python.hpp> #include<boost/python/numeric.hpp> #include<boost/python/tuple.hpp> #include<iostream> using namespace boost::python; void test_array(numeric::array &y, float value) { const tuple &shape= extract<tuple>(y.attr("shape")); int h = extract<int>(shape[0]); // 这个接口看起来很实用 :) int w = extract<int>(shape[1]); for(int h_i=0;h_i<h;++h_i) for(int w_i=0;w_i<w;++w_i) y[make_tuple(h_i,w_i)]=h_i-w_i; y[make_tuple(0,0)] = value; } BOOST_PYTHON_MODULE(array_test) { numeric::array::set_module_and_type("numpy", "ndarray"); def("test",&test_array); }
g++ test.cpp -o array_test.so -fPIC -shared -lboost_python -I /usr/include/python2.7
而后是python
测试脚本ios
import numpy as np import array_test a=np.zeros((3,4)) array_test.test(a,-10.) #>>> a #array([[-10., -1., -2., -3.], # [ 1., 0., -1., -2.], # [ 2., 1., 0., -1.]])
cpp
,hpp
编译能够成功,但import
的时候会提示没有找到初始化函数。BOOST_PYTHON_MODULE
以前先用using namespace boost::python
(我也不清楚,以前觉得是宏展开出问题了,但加了括号后发现仍没有起做用——暂留)