http://machinelearningmastery.com/java-machine-learning/
这篇文章包含了很多Machine Learning方面的软件和库。
numpy的等价物。
http://nd4j.org/
TensorFlow的等价物。
https://deeplearning4j.org/
参考:
https://mp.weixin.qq.com/s?__biz=MzU2OTA0NzE2NA==&mid=2247484466&idx=1&sn=9dd7d305f37f6cad8d4ac37ad17f61f8
Deeplearning4j:使用CNN进行文本分类:图文+代码
https://mp.weixin.qq.com/s/geJDbL1eVcJXDtsO_mu4-w
Deeplearning4j手把手深度学习教程系列完整版
Deep Java Library是AWS开源的Java深度学习框架。和DL4J不同,DJL没有自己的运算层,而必须依靠TF或Pytorch进行计算。
https://github.com/awslabs/djl/
参考:
https://mp.weixin.qq.com/s/-GaxCVUOSe_2lFAeLRaIpQ
用Java训练深度学习模型,原来这么简单
Pandas的等价物。
https://github.com/cardillo/joinery
Weka是一款开源的机器学习以及数据挖掘软件。主要开发者来自新西兰的the University of Waikato。
官网:
http://www.cs.waikato.ac.nz/ml/weka/
Weka不仅有GUI,而且也为开发提供了API,是单机Machine Learning的Java首选。国内的京东用的比较多。
GitHub:
https://github.com/bnjmn/weka
API Doc:
http://weka.sourceforge.net/doc.stable-3-8/
Weka除了基本库之外,还有许多扩展包:
http://weka.sourceforge.net/packageMetaData/
参考:
https://weka.wikispaces.com/Use+Weka+in+your+Java+code
如何在Java代码中使用Weka
ELKI是另一个数据挖掘软件,也有GUI和API。ELKI主要专注于聚类和异常检测算法。
官网:
https://elki-project.github.io/algorithms/
GitHub:
https://github.com/elki-project/elki
Statistical Machine Intelligence and Learning Engine虽然没有GUI,但却有一个类似Spark的命令行界面,以及类似Matplotlib的数据可视化接口。这是一个留美华人工程师写的统计和NLP方面的库。
官网:
https://haifengl.github.io/smile/
参考:
https://mp.weixin.qq.com/s/UZWSUUuPWcyv6yUx-woF4g
Smile实战(一)SVM
https://mp.weixin.qq.com/s/WE7afgw1VzvClKdbAaXVnA
Smile一下,轻松用Java玩转机器学习
这个库虽然功能有限,但却针对字符处理进行了优化。比如Jaccard距离,weka没有实现,ELKI提供的是通用的集合类实现,用起来没有java-string-similarity方便。
官网:
https://github.com/tdebatty/java-string-similarity
https://github.com/hankcs/LDA4j
猿题库开源了两个Java的库:
https://github.com/yuantiku/ytk-learn
https://github.com/yuantiku/ytk-mp4j
Zeppelin是一个让交互式数据分析变得可行的基于网页的开源框架。Zeppelin提供了数据分析、数据可视化等功能。
官网:
https://zeppelin.apache.org/
https://mp.weixin.qq.com/s/WsjZERRkgnReWuDw_z5Hxw
LibRec:一个覆盖70多种算法的推荐系统开源库!
https://mp.weixin.qq.com/s/hn8Es-l1f6raJ_wj5HkqMA
LinkedIn开源Dagli,发布Java机器学习函数库
这种方法是最直观,也最容易想到的:将非零元素用{(row, column): value}的形式保存。
一行数据就是一个list,这样每个数据只需要保存column index和value即可。
这个方法在DOK的基础上,给同一行的元素建立行索引,给同一列的元素建立列索引。显然DOK适用于硬盘存储,而LIL和COO更适合内存存储,因为后者更需要元素访问的便利性。
[0 0 0 0
5 8 0 0
0 0 3 0
0 6 0 0]
A = [ 5 8 3 6 ]
JA = [ 0 1 2 1 ]
IA = [ 0 0 2 3 4 ]
其中,A是非零元素的value,JA是非零元素的column index。
IA是每行的非零元素在A的offset(类似于文件操作中的游标)。比如第一行没有非零元素,因此第一行的offset为0,第二行也为0。但是第二行有两个非零元素,因此第三行的offset需要+2。依此类推。
按照这个规则,可以看出A和JA中的元素个数相等,而IA的元素个数=行数+1。由于IA的最后一个元素必然和A中的元素个数相等(矩阵都遍历完了,offset当然到末尾了),因此有时也会把它省略。
在前ML时代,工业界已经有不少Optimizer软件用于求解凸优化问题,这些软件从原理上基本都属于传统统计学的范畴。
比较知名的Optimizer软件有:CPlex, Gurobi, Mosek, cvx, LINGO。
GLPK(GNU Linear Programming Kit):
https://www.gnu.org/software/glpk/
Ipopt(Interior Point OPTimizer):
https://coin-or.github.io/Ipopt/
参考:
https://mp.weixin.qq.com/s/kdfGUzY6KnI3tpcDg0GX6w
运筹优化问题求解工具Lingo
https://mp.weixin.qq.com/s/ooYg7-pI9axo8Z_vUwMGzg
离散优化求解器大搜罗
https://mp.weixin.qq.com/s/_uGNwcvsIpzQyH6fI_HIPw
MOSEK,一个专注而卓越的优化求解器(一)
https://mp.weixin.qq.com/s/q0x9pXz7p7OciWqBOIV5JQ
XPROG: 简单实用的鲁棒优化(RO, DRO)编程语言
https://mp.weixin.qq.com/s/wJAt-RqmsoyECLGgdlH6RA
基于数据的分布式鲁棒优化算法及其应用
https://zhuanlan.zhihu.com/p/480729614
优化模型建模语言Pyomo入门教程
Neon是个大路货的名字,在数值计算领域ARM和Intel都有叫Neon的硬件或技术。
ARM的Neon是适用于ARM Cortex-A系列处理器的一种128位SIMD扩展结构。它主要聚焦于矩阵运算,当然也可用于DL领域。
官网:
https://developer.arm.com/technologies/neon
Intel的Neon专为DL设计。
官网:
https://ai.intel.com/neon/
GNU scientific library是一个C/C++写的数值计算库。
官网:
https://www.gnu.org/software/gsl/
官网:
https://www.openacc.org/
PGI是由The Portland Group开发的并行计算库,但后者已于2013年被NVIDIA收购。
官网:
https://www.pgroup.com/
HSA(Heterogeneous System Architecture)是AMD推出的异构系统架构。
官网:
http://www.amd.com/zh-cn/innovations/software-technologies/hsa
NetLib是一个数学方面的网站,收集了大量的数学软件和论文。官网:
http://www.netlib.org/
知名软件LAPACK(Linear Algebra PACKage)和BLAS (Basic Linear Algebra Subprograms)的官网就在NetLib:
http://www.netlib.org/lapack/index.html
http://www.netlib.org/blas/index.html
LAPACK和BLAS的历史非常悠久,是用Fortran语言编写的。
GMP是一个C/C++的大整数计算库。
官网:
https://gmplib.org/
代码:
https://sourceforge.net/projects/math-atlas/
安装:
sudo apt install libatlas-base-dev
官网:
http://www.openblas.net/
代码:
https://github.com/xianyi/OpenBLAS
作者:张先轶,北京理工大学本硕(2005年、2007年)+中科院博士(2014年)。PerfXLab(澎峰科技)创始人。
个人主页:
http://xianyi.github.io/index_cn.htm
OpenBLAS需要gfortran参与编译:
sudo apt install gfortran
需要注意gcc的版本和gfortran的版本必须一致。例如,某台机器为了项目需要,没有使用ubuntu默认的gcc版本,这样即使安装了gfortran,也还是不行。最后,安装匹配的gfortran才解决了该问题。
OpenBLAS前身是日本人后藤和茂(Goto Kazushige)写的GotoBLAS2。这是一个真正的业界传奇。GotoBLAS2已经不再维护,而后继的OpenBLAS,只是项目维护而已。
https://www.zhihu.com/question/654319407
cpp26线性代数为什么要基于BLAS标准?
Armadillo是一个线性代数和科学计算的C++库。
官网:
http://arma.sourceforge.net/
ensmallen是一个基于Armadillo的数学优化方面的C++库。
官网:
https://ensmallen.org/
Google推出的一个CPU SIMD的计算库。
官网:
https://github.com/google/highway
HSL是最古老的数学计算库,始于1963年。
官网:
https://www.hsl.rl.ac.uk/catalogue/index.html
由于历史悠久,该项目基本是用fortran编写的。
最简单的任务调度莫过于定时任务。定时执行的任务可用crontab命令设置。
参考:
http://www.cnblogs.com/peida/archive/2013/01/08/2850483.html
crontab命令
一个完整的数据分析系统通常都是由大量任务单元组成:shell脚本程序,java程序,mapreduce程序、hive脚本等。各任务单元之间存在时间先后及前后依赖关系。为了很好地组织起这样的复杂执行计划,需要一个工作流调度系统来调度执行。
常见的调度工具有:AirFlow,Oozie,Azkaban,Cascading,Hamake,DolphinScheduler等。
这些工具的角色大致相当于Kettle中的Job。
TensorRT:嵌入式设备上专用于DL inference的计算库。
TensorRT还有个云端的集群版本:
https://github.com/NVIDIA/tensorrt-inference-server
参考:
https://mp.weixin.qq.com/s/v8-JHd5tWm41WLqR-h6eKA
使用TensorRT集成加速TensorFlow推理
https://mp.weixin.qq.com/s/rMvhsi2vXxVC65C5Z4IXIw
AI视频处理加速引擎TensorRT及Deepstream介绍
https://zhuanlan.zhihu.com/p/35657027
高性能深度学习支持引擎实战——TensorRT
CUDA-X AI是软件加速库的集合,这些库建立在CUDA之上,提供对于深度学习、机器学习和高性能计算必不可少的优化功能。这些库包括cuDNN(用于加速深度学习基元)、cuML(用于加速数据科学工作流程和机器学习算法)、TensorRT(用于优化受训模型的推理性能)、cuDF(用于访问 pandas 之类的数据科学 API)、cuGraph(用于在图形上执行高性能分析),以及超过13个的其他库。
官网:
https://www.nvidia.cn/technologies/cuda-x/
TensorRT-LLM是NVIDIA推出的基于TensorRT的LLM推理工具。
代码:
https://github.com/NVIDIA/TensorRT-LLM/

您的打赏,是对我的鼓励