何时对 java 使用深度学习而不是 python

数据挖掘 机器学习 Python 深度学习 张量流 爪哇
2022-03-06 07:41:24

我被要求探索使用 java 构建基于深度学习的应用程序的选项,所以我碰巧浏览了一个名为 dl4j ( https://deeplearning4j.org ) 的网站,该网站已经实现了从 MLP 到 RNN/LSTM 的不同神经网络。

但我无法理解在基于 python 的实现上使用 dl4j 的基本原理。所以,有人可以请澄清以下项目。

  1. ETL
  2. 数据预处理
  3. 利用预训练模型/迁移学习
  4. 分布式计算
  5. 处理大量数据(图像、时间序列数据、传感器数据等)
  6. 生产实施(批量或实时/在线)
  7. 后期制作培训(现场或实时/在线)
  8. 移动应用程序开发
  9. 物联网边缘设备计算
1个回答

在为某个应用程序选择语言时,许多因素可能会起作用:

  • 谁将构建/维护应用程序,他们是否熟悉该语言?
  • 应用程序需要与哪些其他系统进行通信?一种语言比另一种更容易做到这一点?
  • 这个项目是实验性的还是应该成为未来几年的基石?
  • 是否有需要用该语言完成的现有实现/框架?它符合需要还是需要改变?
  • 等等。

如果我们查看您的列表,这是我的看法:

  • ETL

ETL 是一种与语言完全无关的语言,Java 和 Python 对 ETL 所需的工具都有很好的绑定。

  • 数据预处理

类似于 ETL,虽然 Python 可能更容易做一些简单的事情。

  • 利用预训练模型/迁移学习

Python 更方便,因为大多数现有框架和预训练模型都与 Python 兼容,但可能与 Java 不兼容。

  • 分布式计算

Hadoop 堆栈对 Java 非常友好。值得注意的是,Python 越来越容易与 Hadoop 产品一起使用(但 Java 仍在其下运行)

  • 处理大量数据(图像、时间序列数据、传感器数据……等)

尽管 Python 以速度慢着称,但如果您知道自己在做什么,那么您将使用的大多数 Python 库最终都会运行 C/C++ 代码,因此速度不应该是一个大问题。

  • 生产实施(批量或实时/在线)

Java 是静态类型的,这为生产提供了很多优势,使用 Python 也变得越来越容易(即 pydantic、mypy 等)

  • 后期制作培训(现场或实时/在线)

这与语言无关,这与您的 MLOps 和您的管道有关。

  • 移动应用程序开发

Java 绝对具有优势,尽管在微服务的世界中,Python 可以证明是非常有用的。

  • 物联网边缘设备计算

在设备计算方面,Java 可能具有优势,尽管 C/C++ 可能是您最好的盟友。