有人却用iPhone来训练神经网络
|
这篇文章主要着眼于如何在 iOS 设备上直接为 MNIST 数据集构建和训练一个 LeNet CNN 模型。接下来,研究者将把它与基于著名的 ML 框架(如 TensorFlow)的经典「Python」实现方法进行比较。 在 Swift 中为 Core ML 的训练准备数据 在讨论如何在 Core ML 中创建及训练 LeNet CNN 网络之前,我们可以先看一下如何准备 MNIST 训练数据,以将其正确地 batch 至 Core ML 运行中去。
在下列 Swift 代码中,训练数据的 batch 是专门为 MNIST 数据集准备的,只需将每个图像的「像素」值从 0 到 255 的初始范围归一化至 0 到 1 之间的「可理解」范围即可。 为 Core ML 模型(CNN)训练做准备 处理好训练数据的 batch 并将其归一化之后,现在就可以使用 SwiftCoreMLTools 库在 Swift 的 CNN Core ML 模型中进行一系列本地化准备。
在下列的 SwiftCoreMLTools DSL 函数构建器代码中,还可以查看在相同的情况中如何传递至 Core ML 模型中。同时,也包含了基本的训练信息、超参数等,如损失函数、优化器、学习率、epoch 数、batch size 等等。 可以看到,这里的层、层形状、卷积过滤器和池大小与使用 SwiftCoreMLTools 库在设备上创建的 Core ML 模型完全相同。 比较结果 在查看训练执行时间性能之前,首先确保 Core ML 和 TensorFlow 模型都训练了相同的 epoch 数(10),用相同的超参数在相同的 10000 张测试样本图像上获得非常相似的准确度度量。
从下面的 Python 代码中可以看出,TensorFlow 模型使用 Adam 优化器和分类交叉熵损失函数进行训练,测试用例的最终准确率结果大于 0.98。 (编辑:平顶山站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
