惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
T
The Blog of Author Tim Ferriss
宝玉的分享
宝玉的分享
The Register - Security
The Register - Security
D
Docker
The Cloudflare Blog
A
About on SuperTechFans
Microsoft Security Blog
Microsoft Security Blog
Recent Announcements
Recent Announcements
月光博客
月光博客
B
Blog RSS Feed
博客园 - 【当耐特】
The GitHub Blog
The GitHub Blog
B
Blog
IT之家
IT之家
美团技术团队
Engineering at Meta
Engineering at Meta
C
Check Point Blog
云风的 BLOG
云风的 BLOG
Last Week in AI
Last Week in AI
G
Google Developers Blog
MongoDB | Blog
MongoDB | Blog
Microsoft Azure Blog
Microsoft Azure Blog
S
SegmentFault 最新的问题
V
V2EX
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Apple Machine Learning Research
Apple Machine Learning Research
U
Unit 42
H
Help Net Security
雷峰网
雷峰网
人人都是产品经理
人人都是产品经理
博客园 - 司徒正美
Stack Overflow Blog
Stack Overflow Blog
博客园 - Franky
PCI Perspectives
PCI Perspectives
J
Java Code Geeks
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
M
MIT News - Artificial intelligence
腾讯CDC
A
Arctic Wolf
C
CERT Recently Published Vulnerability Notes
量子位
C
CXSECURITY Database RSS Feed - CXSecurity.com
Latest news
Latest news
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
The Hacker News
The Hacker News
有赞技术团队
有赞技术团队
Schneier on Security
Schneier on Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻

Oragekk's Blog

OpenSpec 技术分享:用规格驱动 AI 编程 ChatGPT&Codex订阅教程 一个 waline 评论系统bug引发的思考 Jenkins 远程触发构建踩坑记 Git SSH 密钥配置 初识Rust vuepress-plugin-meting2 谷歌发布多平台应用开发神器Project IDX!PaLM 2加持 Vue常见优化手段 Vue2响应式原理解析 Dart 中的并发 Flutter 工作原理 如何利用GitHub Action提交URL到搜索引擎 提交URL到搜索引擎(百度、Bing、Google) GitHub Actions 使用介绍 素材设计 前端-Q&A 浏览器的事件循环 你不知道的 CSS 之包含块 CSS 属性计算过程 Vercel deploy忽略指定分支 评论插件 Waline 之邮件通知配置 公开API 终端究极美化iTerm2+Pure 使用Bing API提交网站URL Flutter 基础大集合 关于本站 关于本站 关于我 Markdown 展示 使用n命令管理node版本 幻灯片页 ReactNative State(状态) ReactNative开发环境配置,ES6语法介绍 ReactNative介绍 更优雅强大的终端ZSH YYCache优秀的缓存设计 WebViewJavascriptBridge NSError WCDB漫谈 优雅的实现TableViewCell单选 初探机器学习框架CoreML 深入理解swift中闭包的捕捉语义 ijkPlayer 集成 iOS 配置https iOS timelineLogistics iOS Cookie的配置及使用 WKWebView拦截URL WKWebView使用及自适应高度 textfield限制输入字符 评论系统从多说迁移到disqus指南 利用Runtime进行快速归档 iOS 10.3 keychain 重大更新 Cell的accessoryType属性标记单元格之后,出现的重用问题 通过UserAgent判断设备 AFNetworking A memory leak 一人一句宋词 OC 中的枚举类型 iOS - Image compression algorithm iOS程序启动原理(下) iOS程序启动原理(上) NSOperatioin TableView性能优化 Runloop Test Three ways to call Update Cocoapods 1.1.1 减小iOS-App或者静态库体积 Jekyll旧站回忆 JavaScript ES6 CommonJS,RequireJS,SeaJS 归纳笔记 Unix/Linux 扫盲笔记
神经网络模型训练
Oragekk · 2019-07-24 · via Oragekk's Blog

神经网络模型训练

经过之前 coreML 的介绍,自己训练一个模型

使用 xcodeplayground 训练简单神经网络模型

详细:

去年,苹果(Apple)推出了 Core ML:这是一种快速的方法,可以让你用尽可能少的代码将预先培训好的机器学习模型导入应用程序中!今年,有了 Create ML,苹果给了我们开发人员创建我们自己的机器学习模型直接进入 Xcode 的平台的能力!我们只需要一些数据就行了!目前,Create ML 允许文本、图像和表作为数据。然而,由于这是大多数 ML 应用程序的组成部分,这应该很好地服务于您的目的!我将向您展示如何使用这三种类型的数据创建一个 ML 模型.

注意:本教程构建在 Xcode 10 和 macOS Mojave 之上。请确保您升级了 Xcode 和 macOS,以便遵循本教程.

之前的文章介绍过如何使用 ML,今天主要讲一下使用 xocde 的 playground 来训练一个简单神经网络模型,顺便可以熟悉 swift

准备工作

1.本文想做一个图像分类器的模型,区分简单图像

2.打开文件夹时,您将注意到另外两个文件夹:训练数据和测试数据。每个文件夹都有苹果和香蕉的混合图片。有大约 20 张苹果图片和 20 张香蕉图片,分别被称为测试数据和 80 张苹果图片和 80 张香蕉图片。我们将在训练数据中使用图像来训练分类器,然后使用测试数据来确定其准确性。

3.如果您想构建自己的图像分类器,那么将数据集进行 2-8 分割是很重要的。大约 80%的图像用于训练数据,其余部分用于测试数据。这样,您的分类器就有更多的数据需要训练。在每个文件夹中,将图像放在各自的文件夹中。根据图像的类别标签命名这些文件夹。

4.新建 playground,注意这里一定要选 macos 而不是 iOS,因为训练模型需要引入的头文件CreateMLUI是 macos 的

5.接下来,给你的 playground 的起个名字,把他保存起来。

开始 coding

开始

确保在 Xcode playground 中启用 Live View 特性,您将能够看到可视化界面!
需要引入 CreateMLUI,CreateMLUI 是一个与 CreateML 类似的框架,但它有一个 UI。到目前为止,CreateMLUI 只能用于图像分类.
然后在 playground 中输入以下代码

运行之后是这个样子的

下面向其中拖入训练数据,它会自动开始训练并显示当前进度

控制台也会显示一些信息

训练完成之后我们可以看到上面有三个标签:培训、验证和评估。培训是指 Xcode 成功培训的培训数据的百分比。这应该是 100%

评估是空的因为我们还没有给 xcode 任何测试数据,xcode 会在剩余的 20%上验证分类器,接着拖入测试数据

当一切都完成后,我们的评估分数应该也是在 100%

如果你对你的结果满意,剩下的就是保存文件了!单击图像分类器标题旁边的箭头。应该出现一个下拉菜单,显示所有的元数据。将元数据更改为您想要的方式,并将其保存到您想要的位置!

他长这个样子

接下来可以打开 CoreML 模型并查看元数据。它有你填的所有东西!恭喜你!您是您自己的图像分类器模型的作者,它非常强大,并且只需要 17 KB!

文本分类器模型

接下来,我们将使用 Create ML 构建一个垃圾邮件检测器模型。
废话不多说,上代码

  • 首先,我们创建一个名为 data 的常量,它是垃圾邮件的一种 MLDataTable。json 文件。MLDataTable 是一个全新的对象,用于创建一个决定训练或评估 ML 模型的表。我们将数据分为 trainingData 和 testingData。和以前一样,比率是 80-20,种子是 5。种子是指分类器的起点。然后我们用我们的训练数据定义一个叫做 spamClassifier 的 MLTextClassifier,定义数据的值是文本,什么值是标签。
  • 创建了两个变量,名为 trainingAccuracy 和 validationAccuracy,用于确定分类器的准确程度。在侧窗格中,您可以看到百分比。
  • 我们还检查评估的执行情况。(请记住,评价是分类器以前没有看到的文本上使用的结果,以及它们的准确性。
  • 最后,我们为 ML 模型创建一些元数据,如作者、描述和版本。我们使用 write()函数将模型保存到我们选择的位置!在下面的图片中,你会看到我选择了桌面!

运行。您可以在控制台中看到迭代,在右边栏中看到精度! 完成所有操作后,将保存核心 ML 模型!您可以查看模型并查看元数据!