rindow / rindow-neuralnetworks
深度学习神经网络库
Requires
- php: ^8.1
- rindow/rindow-math-matrix: ~2.0.0
Requires (Dev)
- ext-pdo_sqlite: *
- rindow/rindow-math-plot: ~1.0.9
Suggests
- ext-pdo_sqlite: for save model
- rindow/rindow-math-matrix-matlibffi: ~1.0.1
- rindow/rindow-math-plot: when visualize machine learning results
README
Rindow 神经网络库是深度学习的高级神经网络库。
概述
类似于 Python 中的 Keras,您可以使用 PHP 轻松编写网络模型。
网站
- Rindow 项目: https://rindow.github.io/
- Rindow 神经网络: https://rindow.github.io/neuralnetworks
加速
外部库 rindow-matlib 和 OpenBLAS 可用于以接近 TensorFlow CPU 版本的计算速度进行计算。在笔记本电脑上训练的模型可在流行的网站托管服务上使用。深度学习也支持流行的 PHP 网站托管服务。
GPU 加速
它支持使用 OpenCL 的 GPU 加速。如果它们支持 OpenCL,您还可以使用 nvidia 以外的 GPU。它还可以与安装在笔记本电脑中的集成 GPU 一起使用。
链接库
- Rindow Math Matrix: 科学计算库
- Rindow Matlib: 适用于机器学习的快速矩阵计算库
- OpenBLAS: 快速矩阵算术库
- Rindow Math Plot: 可视化机器学习结果
- OpenCL: GPU 计算编程接口
- CLBlast: 使用 OpenCL 的高速矩阵计算库
所需环境
- PHP 8.1, 8.2, 8.3
- 对于 PHP 7.x, 8.0 环境,请使用 1.x 版本。
安装
请使用 Composer 进行安装。
$ composer require rindow/rindow-neuralnetworks $ composer require rindow/rindow-math-plot
如果您直接使用,将需要花费时间来学习。为了提高速度,我们强烈建议您安装高速计算库。
请设置外部库。
预构建的二进制文件
- Rindow-matlib: https://github.com/rindow/rindow-matlib/releases
- OpenBLAS: https://github.com/OpenMathLib/OpenBLAS/releases
请根据您的环境进行设置。有关详细说明,请点击这里。
$ composer require rindow/rindow-math-matlibffi
内存扩展
根据您使用的数据量,您可能需要增加 PHP 使用的最大内存量。
特别是当处理图像数据时,样本数据量变得巨大,需要比预期更多的内存容量。
例如,按照以下方式更改 php.ini 中的 memory_limit。
memory_limit = 8G
模型描述
示例目录提供了简单图像学习的源代码。
请按以下方式运行
$ RINDOW_MATH_PLOT_VIEWER=/path/to/viewer $ export RINDOW_MATH_PLOT_VIEWER $ mkdir samples $ cd samples $ cp ../vendor/rindow/rindow-neuralnetworks/samples/basic-image-clasification.php . $ php basic-image-clasification.php
*请指定 RINDOW_MATH_PLOT_VIEWER 的适当查看器。
如果正确执行,将显示学习过程的图表。
GPU/OpenCL 支持
请下载二进制文件。
根据您的环境设置二进制文件。详细说明请见https://github.com/rindow/rindow-math-matrix-matlibffi/
请设置环境变量。
$ RINDOW_NEURALNETWORKS_BACKEND=rindowclblast::GPU $ export RINDOW_NEURALNETWORKS_BACKEND $ cd samples $ php basic-image-classification.php
对于 RINDOW_NEURALNETWORKS_BACKEND,您不仅可以指定名称,如 rindowclblast,还可以指定 OpenCL 设备类型以及一系列 Platform-ID 和 Device-ID。例如,"rindowclblast::GPU" 或 "rindowclblast::0,0"。