[rindow/rindow-neuralnetworks]PHP的神经网络库,支持GPU加速

2022-02-26 奥古斯宏
简简单单用PHP实现强大的机器学习。

Rindow Neural Networks 是一个高级神经网络库。可以使用PHP实现强大的机器学习。

  • 它可以为DNN、CNN、RNN 和 Attention 构建机器学习模型
  • 内置提供了几个图像分类和文本翻译的案例例子
  • 使用的PHP扩展的性能是tensorflow CPU 的两倍
  • 不需要安装复杂的环境,安装三个扩展,使用composer即可

支持rindow_openblas扩展,可以在windows上使用GPU加速,不过这个特性目前还在试验阶段。

本文给大家介绍一下这个框架,并且分享一下测试的经验。

这个库就像Python中的Keras一样,他们在代码接口上都差不多.

对环境所要的依赖如下,后面会详细介绍:

  • PHP 7.2, 7.3, 7.4, 8.0.
  • Windows10 or Linux environment 需要安装rindow_openblas扩展.
  • Rindow Math Matrix
  • Rindow Math Plot ( 用于生成图标)
  • GD / GD2 extension ( 用于渲染图表)
  • pdo_sqlite extension ( 用于存储模型数据)
  • Rindow OpenBLAS extension ( 进行高性能的计算)
  • Rindow OpenCL extension / Rindow CLBlast extension ( 使用GPU加速,目前还在试验阶段)

安装

Rindow Neural Networks要求如下:

  • PHP 7.2, 7.3, 7.4, 8.0
  • Windows 10 20H2
  • Ubuntu 18.04, 20.04
  • AMD CPU/APU 64bit(SSE2)
  • OpenBLAS (0.3.13 Windows-x64, 0.3.8 Ubuntu-2004, 0.2.20 Ubuntu-1804)
  • CLBlast (1.5.1 Windows-x64)

首先我们要下载安装PHP并且设置PHP的目录到%PATH%环境中,这里要注意,不要使用nts版本,比如phpstudy内置的php版本都是不可以用的,去PHP官网下载Thread safe的版本。

版权声明:本文由phpreturn.com(PHP武器库官网)原创和首发,所有权利归phpreturn(PHP武器库)所有,本站允许任何形式的转载/引用文章,但必须同时注明出处。

我这里使用的PHP7.4。

把PHP解压到指定目录,并且在系统中设置%PATH%目录。

然后修改php.ini,设置如下几个配置:

  • memory_limit = 8G
  • extension = rindow_openblas
  • extension = pdo_sqlite
  • extension = gd2
  • extension = mbstring
  • extension = openssl

其中可以看到一个陌生的扩展rindow_openblas,这需要我们去下载这个扩展放置到php的ext目录下:

版权声明:本文由phpreturn.com(PHP武器库官网)原创和首发,所有权利归phpreturn(PHP武器库)所有,本站允许任何形式的转载/引用文章,但必须同时注明出处。

https://github.com/rindow/rindow-openblas/releases

还要下载另一个开源项目OpenBLAS,并且设置它的bin目录到%PATH%环境中。

https://github.com/xianyi/OpenBLAS/releases

然后再命令行中运行 php -m 看看是否出错:

版权声明:本文由phpreturn.com(PHP武器库官网)原创和首发,所有权利归phpreturn(PHP武器库)所有,本站允许任何形式的转载/引用文章,但必须同时注明出处。

C:TEMP>php -m
[PHP Modules]
...
pdo_sqlite
...
rindow_openblas
...
C:TEMP>

剩下还有三个扩展不是必须的,但是它的案例里实际上是需要的,所以也是要安装:

下载前两个项目,他们是php 的扩展,放到php的ext目录并在php.ini中开启。

第三个项目是一个开源的计算库,下载解压然后设置它的bin目录到%PATH%环境中。

测试案例

这时候我们就可以跑一跑他提供的案例了。

新建一个文件夹,然后用composer 引入下面两个包:

版权声明:本文由phpreturn.com(PHP武器库官网)原创和首发,所有权利归phpreturn(PHP武器库)所有,本站允许任何形式的转载/引用文章,但必须同时注明出处。

composer require rindow/rindow-neuralnetworks
composer require rindow/rindow/rindow-math-plot

然后把这个文件夹的文件复制出来:

确保正常引入autoload.php,我们运行一个最基本的测试,也类似所有人工智能框架的hello world的项目,识别手写数字程序,基于mnist数据集的实验。很熟悉对不对,在学习其他人工智能框架的时候见过。

我们运行这个案例看看:

php basic-image-classification.php

他会自动下载数据集并且训练模型,最终会输出一张测试效果图。

版权声明:本文由phpreturn.com(PHP武器库官网)原创和首发,所有权利归phpreturn(PHP武器库)所有,本站允许任何形式的转载/引用文章,但必须同时注明出处。

这样一个简单地数字手写的人工智能项目就玩成了。

这个项目还可以设计神经网络,自定义模型,更多的细节可以看他的文档:

https://rindow.github.io/neuralnetworks/index.html

实际上,想要玩转这个项目,需要一定的人工智能基础,仅仅是懂PHP是不够的,小编写了五年多PHP了,非常想搞一搞人工智能,现在有了PHP的神经网络项目,代码也都能看懂,但是也仅仅是把案例跑起来而已。这已经是另一片知识的海洋了。

最近浏览
IP用户:42.202.*.*
1 小时前 Go-http-client
IP用户:182.201.*.*
10 小时前 Go-http-client
IP用户:123.186.*.*
22 小时前 Go-http-client
IP用户:42.202.*.*
1 天前 Go-http-client
IP用户:42.202.*.*
1 天前 Go-http-client
IP用户:36.148.*.*
1 天前 Go-http-client
IP用户:123.186.*.*
2 天前 Go-http-client
IP用户:120.227.*.*
2 天前 Go-http-client
IP用户:123.244.*.*
2 天前 Go-http-client
IP用户:110.154.*.*
3 天前 Go-http-client
IP用户:120.228.*.*
3 天前 Go-http-client
IP用户:34.64.*.*
3 天前 Googlebot
累计浏览次数:1719
评论
点击登录
phpreturn,PHP武器库,专注PHP领域的项目和资讯,收录和介绍PHP相关项目。
最近浏览 点击登录
累计浏览次数:102648
一周浏览次数:3354
今日浏览次数:460

本站所有权利归 phpreturn.com 所有

举报/反馈/投稿邮箱:phpreturn@ulthon.com

鲁ICP备19027671号-2