跳到内容

基马提奥

Kymatio:Python中的小波散射

Kymatio是Python编程语言中小波散射变换的一种实现,适用于信号处理和机器学习中的大规模数值实验。散射变换是作为卷积网络实现的平移-变信号表示,其滤波器不是学习的,而是固定的(如小波滤波器)。

PyPI公司 许可证 生成状态 下载 编解码器

如果您需要满足以下条件的库,请使用Kymatio:

  • 支持一维、二维和三维小波,
  • 在深度学习架构中集成小波散射,以及
  • 在CPU和GPU硬件上无缝运行,具有主要的深度学习API,如如PyTorch、TensorFlow和Jax。

基马提奥环境

灵活性

Kymatio组织联合了几个预先存在的小波散射软件包的开发人员,包括ScatNet公司,散射.m,PyScatWave公司,小波散射.jl、和PyScatHarm公司.

将Kymatio接口到深度学习框架中可以让程序员反向传播小波散射系数的梯度,从而将它们集成到端到端可训练的管道中,例如深度神经网络。

便携性

这些算法中的每一种都是用高级命令式范式编写的,只要它能够实现复值线性代数和快速傅立叶变换(FFT),就可以移植到任何Python库中进行阵列运算。

每个算法都有一个前端和后端。前端负责与用户交互。后端定义了散射变换的计算。

目前,有八个可用的前端-后端对,NumPy(CPU)、scikit-learn(CPU),纯PyTorch(CPU和GPU),PyTorch>=1.10(CPU与GPU)、PyTotch+scikit-cuda(GPU)和PyTonch>=1.10+scikit-cuda。

可扩展性

Kymatio集成了1D、2D和3D小波滤波器组的构建,以及用于提取小波散射系数的记忆高效算法,在一个通用的应用程序编程界面下。

在图形处理单元(GPU)而不是多核常规中央处理单元(CPU)上运行Kymatio可以显著加快散射变换的计算速度。基于CPU的MATLAB代码的当前加速比在1D和3D中为10,在2D中为100。

我们指的是我们的官方基准了解更多详细信息。

如何引用

如果你使用这个包,请引用我们的论文Kymatio:Python中的分散变换:

Andreux M.、Angles T.、Exarchakis G.、Leonarduzzi R.、Rochette G.、Thiry L.、Zarka J.、Mallat S.、Andén J.、Belilovsky E.、Bruna J.、Lostanlen V.、Chaudhary M.、Hirn M.、Oyallon E.、Zhang S.、Cella C.、Eickenberg M.(2020)。基马提奥:在Python中散布变换。机器学习研究杂志21(60):1−62020。(纸) (bibtex)

安装

依赖关系

基马提奥要求:

  • Python(>=3.7)
  • SciPy(>=0.13)

标准安装

我们强烈建议在Anaconda环境中运行Kymatio,因为这简化了其他依赖关系。您可以使用包管理器安装最新版本的Kymatiopip(点阵),它将自动下载Python包索引(PyPI)中的Kymatio:

pip安装基马提奥

Linux和macOS是两种官方支持的操作系统。

前端

数字Py

要显式调用NumPy前端,请运行:

从kymatio.numpy导入散射2D散射=散射2D(J=2,形状=(32,32))

Scikit-learn公司

你也可以打电话散射2D作为一名科学爱好者变压器使用:

从kymatio.sklearn导入散射2Dscattering_transformer=散射2D(2,(32,32))

PyTorch公司

使用PyTorch,您可以实例化散射2D作为一个火炬编号。模块:

从kymatio.torch导入散射2D散射=散射2D(J=2,形状=(32,32))

TensorFlow和Keras

类似地,在TensorFlow中,您可以实例化散射2D作为一个tf.模块:

从kymatio.tensorflow导入散射2D散射=散射2D(J=2,形状=(32,32))

或者,您可以致电散射2D作为Keras图层使用:

从tensorflow.keras.layers导入输入从kymatio.keras导入散射2D输入=输入(形状=(32,32))散射=散射2D(J=2)(输入)

杰克斯

最后,在安装了Jax之后,您还可以实例化一个Jax散射2D对象:

从kymatio.jax导入散射2D散射=散射2D(J=2,形状=(32,32))

从源安装

假设Kymatio源代码已经下载,您可以通过运行

pip安装-r要求.txtpython setup.py安装

开发商还可以通过以下方式安装Kymatio:

pip安装-r要求.txtpython setup.py开发

GPU加速

某些前端,numpy公司sklearn公司,只允许在CPU上进行处理,因此速度较慢。这个火炬,张量流,珊瑚礁、和喷气发动机然而,前端也支持GPU处理,这可以显著加快计算速度。此外火炬后端支持优化斯库达语后端,目前在计算散射变换方面提供了最快的性能。

要使用它,必须首先安装西基特库达丘比依赖项:

pip安装scikit-cuda cupy

然后可以使用backend='torch_skcuda'参数:

从kymatio.torch导入散射2D散射=散射2D(J=2,形状=(32,32),后端='torch_skcuda')

文档

Kymatio的文档正式托管在kymat.io公司网站。

在线资源

从源代码构建文档

文档也可以在文件/GitHub存储库的子文件夹。要在本地构建文档,请克隆此存储库并运行

pip安装-r要求_optional.txt光盘文档;清洁;生成html

支持

我们要感谢Flatiron Institute的科学计算核心将其计算资源用于测试。

扁钢

我们还要感谢埃科尔·诺曼底Supérieure的支持。

欧洲标准化组织

基马提奥

基马(κύμα)手段波动希腊语。同样的,基马提奥(κυμάτιο)手段小波.

请注意,组织和图书馆都是大写的(基马提奥)而相应的Python模块是用小写写的(进口基马提奥).

Kymatio的推荐发音是金-氢氧化钛换言之,它与露台押韵,而不是与比例押韵。