python中的压缩连续计算库
c3p的Python项目详细描述
压缩连续计算(c3)
< Buff行情>使用函数计算
压缩连续计算(c3)包旨在使使用多维函数执行连续线性和多线性代数变得容易。它的工作原理是以低阶格式表示多维函数。常见的任务包括对向量或矩阵值函数进行"矩阵"分解、将函数相加或相乘、集成多维函数等等。以下是功能示例
- 黑箱模型的自适应近似(指定为函数指针)
- 从数据回归模型
- 线性和非线性近似
- 多项式、分段多项式、线性单元和径向基函数空间中的逼近
- 通用自适应积分方案
- 差异化
- 乘法
- 添加
- 舍入
- 计算雅可比数和黑森数
- 期望和方差
- Sobol敏感性
除了上述c3包独有的功能外,我还有一些常规优化例程,包括
- 高炉煤气
- lbfgs
- 梯度下降
- 带adam的随机梯度
Doxygen提供了大多数功能的文档: http://alexgorodetsky.com/c3doc/html/
安装/入门
此代码的依赖项是
- 布拉斯
- 拉帕克
- swig(如果构建非c接口)
- 克
通常,这些依赖项可以通过系统的包管理器(apt、brew或port)安装。
来源
git clone https://github.com/goroda/Compressed-Continuous-Computation.git c3 cd c3 mkdir build cd build cmake .. make
这将把所有共享库安装到c3/build/src中。主要的共享库是libc3,其余的都是子模块。要安装到特定位置,请使用
cmake .. -DCMAKE_INSTALL_PREFIX=/your/choice
make install
python接口
您可以使用pip实用程序通过
pip install pathlib pip install c3py
可以在pyexamples子目录中获得一些示例
python pywrappers/pytest.py
另一种安装方法是下载git存储库,然后运行
python setup.py build python setup.py install
一个工作流程是在一个新的虚拟环境中安装这个包。例如,使用conda可以运行以下命令(从c3目录中)
conda create -n c3pyenv python=3.7 conda activate c3pyenv pip install numpy python setup.py build python setup.py install
配置选项
建立静态库
默认值:`off'
使用此选项可以切换是否应构建静态库或共享库。
注意:如果生成python包装器,则不能将此选项设置为"打开"
构建子库
默认值:`off'
使用此选项可以切换是否将每个子库构建到其自己的库中
构建测试
默认值:`off'
使用此选项可以切换是否生成单元测试
构建示例
默认值:`off'
使用此选项可以切换是否编译exampels
构建配置文件
默认值:`off'
使用此选项可以切换是否编译分析可执行文件
构建基准
默认值:`off'
使用此选项可以切换是否编译基准测试
构建实用程序
默认值:`off'
使用此选项可以切换是否编译实用程序
我在
上测试过的系统- Mac OS X与Clang 8.0版
- 带有gcc 5.0版的ubuntu
解决一些可能的问题
错误:找不到"python.swg"
在Mac OS X上,如果使用
sudo port install swig
可能会出现上述错误。要纠正此错误,请安装swig python包
sudo port install swig-python
(在Mac OS X上)错误:未找到stdio.h
<这个哈出现在Mac OS X的某些更新版本上。要解决此问题,以下StackOverflow线程似乎可以工作https://stackoverflow.com/questions/52509602/cant-compile-c-program-on-a-mac-after-upgrade-to-mojave
numpy错误
有时您可能会看到以下错误
_frozen_importlib:219: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility. Expected 216, got 192
或
git clone https://github.com/goroda/Compressed-Continuous-Computation.git c3 cd c3 mkdir build cd build cmake .. make0
我找到的一个解决这个问题的方法(https://stackoverflow.com/a/47975375" rel="nofollow">https://stackoverflow.com/a/47975375)是通过运行以下命令升级numpy。我真的不知道为什么这样做…
git clone https://github.com/goroda/Compressed-Continuous-Computation.git c3 cd c3 mkdir build cd build cmake .. make1
编码实践
我的目标是记录(使用doxygen)用户可用的每个功能,并提供一个单元测试。此外,我不会将代码推送到内存泄漏的主分支。如果遇到任何问题,我会不断地寻找更多的建议来提高代码的健壮性。
贡献
请打开github问题以询问问题、报告错误或请求功能。 若要投稿,请分叉存储库并设置分支。
作者:alex a.gorodetsky
联系方式:goroda@umich.edu
版权所有(c)2014-2016,麻省理工学院
版权所有(c)2016-2017,Sandia国家实验室
版权所有(c)2018,密歇根大学
许可证:BSD