Swift 机器学习:功能与限制——第二部分

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

Swift 机器学习:能力与局限性 — 第二部分



在第一部分中,我们介绍了在机器学习背景下使用 Swift 的基础知识。今天我们将深入探讨实际应用:我们将研究库、编写真实代码示例,并讨论对每个学习 Swift 初学者 都重要的局限性。如果你想掌握以 ML 为重点的 编程 Swift 技能——这篇文章正是为你而写。



1. 主要的 Swift 机器学习库



Swift 的 ML 生态系统正在积极发展。以下是你需要了解的关键工具:



  • Core ML — 来自 Apple 的框架,用于将现成模型集成到 iOS/macOS 应用程序中。
  • Create ML — 一个无需深厚 ML 知识即可在 Mac 上直接训练模型的工具。
  • TensorFlow Swift(已过时,但仍可用于学习)— 流行库的一个移植版本。
  • Swift for TensorFlow — 一个实验性项目,影响了现代方法。


为了 学习 如何使用这些库,建议从 Create ML 开始——即使对初学者来说它也很直观。



2. 代码示例:使用 Core ML 进行图像分类



让我们看一个使用预训练的 MobileNetV2 模型进行图像分类的简单示例。这对于 Swift 初学者 来说是一个绝佳的任务。



import CoreMLimport Visionimport UIKit

// 加载模型guard let model = try? VNCoreMLModel(for: MobileNetV2().model) else { fatalError("Failed to load model")}

// 创建请求let request = VNCoreMLRequest(model: model) { request, error in guard let results = request.results as? [VNClassificationObservation], let topResult = results.first else { print("Failed to classify") return } print("Object: \\(topResult.identifier), confidence: \\(topResult.confidence)")}

// 加载图像let image = UIImage(named: "cat.jpg")!let handler = VNImageRequestHandler(cgImage: image.cgImage!, options: [:])try? handler.perform([request])


这段代码展示了将 ML 集成到应用程序中是多么容易。得益于此类框架,编程 Swift 正变得越来越易于使用。



3. Swift 在 ML 中的局限性



尽管取得了进步,Swift 仍有一些缺点,在 学习 和选择工具时需要考虑:



  • 社区较小 — 与 Python 相比,寻找现成解决方案更困难。
  • GPU 支持有限 — 在 macOS 上,模型训练比使用 CUDA 的 Linux 要慢。
  • 库较少 — 没有 scikit-learn、PyTorch 或 Keras 的完全等价物。
  • 专注于 iOS/macOS — Swift 不适用于跨平台 ML 项目。


然而,如果你正在为 Apple 生态系统进行开发,这些局限性并不致命。对于 Swift 初学者 来说,重要的是要理解:这门语言非常适合集成,但不适合研究。



4. Swift 在机器学习中的前景



Apple 正在积极投资 ML:改进 Core ML、添加对新架构(如 transformer)的支持。每年,编程 Swift 在 ML 任务中变得越来越有吸引力。



给那些希望深入学习 学习 Swift for ML 的人的建议:



  • 学习 Create ML — 这是初学者的最佳起点。
  • 在实际项目中使用 Core ML 进行练习。
  • 关注最新消息:Apple 会定期发布更新。
  • 不要害怕使用 Python 进行训练,而使用 Swift 进行生产部署。


结论



Swift 是一种强大的语言,用于集成

博客

书籍推荐