Swift 机器学习:Core ML、Create ML、TensorFlow Swift 和 Turi Create

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

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

开始课程

Swift 机器学习:iOS/macOS 库

Swift 是 Apple 推出的一款强大且现代的语言,它不仅用于传统的应用程序开发,也越来越多地用于机器学习任务。由于与 Apple 生态系统的紧密集成,Swift 允许直接在设备(iOS、macOS、watchOS、tvOS)上运行 ML 模型,而无需将数据发送到服务器。在本文中,我们将介绍四个关键工具:Core ML、Create ML、Swift for TensorFlow 和 Turi Create。您将了解它们的工作原理、各自的优势以及如何开始使用它们。



1. Core ML — 模型集成的基础

Core ML 是 Apple 的一个框架,允许将训练好的机器学习模型集成到 Swift 应用程序中。它支持来自 TensorFlow、PyTorch、Keras、scikit-learn 等流行库的模型(通过转换为 .mlmodel 格式)。

Core ML 的主要优势在于性能:模型在设备上运行,利用 CPU、GPU 或 Neural Engine(在配备 A12+ 芯片的设备上)。这确保了低延迟和数据隐私。

在 Swift 中使用 Core ML 的示例:

import CoreMLimport Vision

// 加载模型(例如 MobileNetV2)guard let model = try? VNCoreMLModel(for: MobileNetV2().model) else { fatalError("无法加载模型")}

// 创建请求let request = VNCoreMLRequest(model: model) { request, error in guard let results = request.results as? [VNClassificationObservation], let topResult = results.first else { return } print("识别结果:\\(topResult.identifier),置信度:\\(topResult.confidence)")}

// 对图像执行请求let image = UIImage(named: "cat.jpg")!let handler = VNImageRequestHandler(cgImage: image.cgImage!, options: [:])try? handler.perform([request])


2. Create ML — 几乎无需代码的模型训练

Create ML 是 Apple 的一个工具,用于以最少的代码编写来训练机器学习模型。它在 macOS 上运行(通过 Swift Playgrounds 或 Xcode),支持以下任务:图像分类、文本分类、表格数据、推荐系统等。

您只需向它提供一个带有标注数据的文件夹,即可训练模型。训练完成后,模型会自动转换为 Core ML 格式,并可供使用。

在 Swift 中训练图像分类器的示例:

import CreateMLimport Foundation

// 训练数据文件夹路径(结构:/train/class1/, /train/class2/)let trainingData = try MLImageClassifier.DataSource.labeledDirectories(at: URL(fileURLWithPath: "/path/to/train"))

// 创建并训练模型let classifier = try MLImageClassifier(trainingData: trainingData)

// 在测试数据上评估准确率let evaluationMetrics = classifier.evaluation(on: trainingData)print("准确率:\\(evaluationMetrics.classificationError)")

// 保存为 .mlmodel 格式try classifier.write(to: URL(fileURLWithPath: "/path/to/MyImageClassifier.mlmodel"))


3. Swift for TensorFlow (S4TF) — 科学实验

Swift for TensorFlow 是 Google 的一个实验性项目,它将 TensorFlow 的功能引入 Swift 世界。它允许在 Swift 中编写可微分的计算并训练神经网络,充分利用自动微分的强大功能。

尽管该项目已正式冻结,但其理念在社区中仍然存在,并且代码可用于研究和原型设计。如果您想创建自定义层、损失函数或试验新架构,S4TF 尤其有用。

使用 Swift for TensorFlow 的简单神经网络示例:

import TensorFlow

// 定义模型:单隐藏层全连接网络

推荐