返回顶部
首页 > 资讯 > 精选 >Swift有什么用
  • 185
分享到

Swift有什么用

2023-06-16 18:06:05 185人浏览 薄情痞子
摘要

这篇文章将为大家详细讲解有关Swift有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.为什么选择Swift?PyTorch是为了克服Tensorflow中的限制。但现在我们正接近python的极

这篇文章将为大家详细讲解有关Swift有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

1.为什么选择Swift?

PyTorch是为了克服Tensorflow中的限制。但现在我们正接近python的极限,而Swift有可能填补这一空白。"——Jeremy  Howard

最近,Swift作为一种数据科学语言引起了很多人的兴奋和关注。每个人都在谈论它。以下是你应该学习Swift的几个理由:

Swift快,很接近C的速度了

同时,它有一个非常简单和可读的语法,非常类似Python:

Swift有什么用

与Python相比,Swift是一种更高效、更稳定、更安全编程语言

这也是一种很好的移动语言。事实上,它是为iPhone开发iOS应用程序的官方语言

它对自动微分有强大的集成支持,这使它成为为数不多的用于数值计算的高级语言之一

它背后有谷歌、Apple、Fastai等的支持!

以下是Jeremy Howard对Swift的评价视频:https://youtu.be/drSpCwDFwnM

2.数据分析的Swift基础

在我们开始使用Swift执行数据科学的细节之前,让我们简要介绍一下Swift编程语言的基础知识。

2.1 Swift的生态系统

当前数据科学的Swift主要由两个生态系统组成:

  • 开源生态系统

  • 苹果的生态系统

Swift有什么用

开源生态系统是我们可以下载并在任何操作系统或机器上运行Swift的地方。我们可以使用非常酷的Swift库来构建机器学习应用程序,比如用于TensorFlow的Swift、SwiftAI和SwiftPlot。

Swift还允许我们无缝地从Python中导入成熟的数据科学库,如NumPy、panda、matplotlib和scikit-learn。

另一方面,苹果的生态系统本身就令人印象深刻。有一些有用的库,比如CoreML,可以让我们用Python来训练大型模型,并直接将它们导入到Swift中进行推理。此外,它还提供了大量的预先训练过的先进模型,我们可以直接使用它们来构建ioS/MacOS应用程序。

Swift有什么用

还有其他有趣的库,比如swift  ,coreml,transfORMer,可以让我们在iPhone上运行最先进的文本生成模型,比如GPT-2、BERT等。

Swift有什么用

当你需要为Apple设备构建基于机器学习的应用程序时,还有许多其他的库可以提供良好的功能。

这两个生态系统之间存在多种差异。但最重要的是,为了使用苹果的生态系统,你需要有一台苹果的机器,你只能为苹果的设备开发,如iOS, macOS等。

既然你已经有了Swift作为数据科学语言的概述,让我们进入代码吧!

2.2 为Swift设置环境

Swift可用于谷歌Colab与GPU和TPU版本。我们将使用它,以便你可以快速跟上它的速度,而不必在安装过程中花费太多时间。

Swift有什么用

你可以按照下面的步骤打开一个Colab笔记本,这是快速激活的:

  • 打开一个空白的Swift笔记本(Https://colab.research.Google.com/GitHub/tensorflow/swift/blob/master/notebooks/blank_swift.ipynb)

点击"File",然后选择"Save a copy in Drive"-这将保存一个新的Swift笔记本在你自己的谷歌驱动器上!

Swift有什么用

已经准备好开始写Swift代码了,一下是第一行:

如果你想在你自己的系统上使用Swift,那么这里有一些你可以打开的链接:

  • 如果你想在本地系统上安装Swift,你可以按照安装说明操作:https://swift.org/getting-started/#using-the-repl

  • ubuntu上安装Jupyter笔记本,请参考Jeremy  Howard安装Swift的说明:https://forums.fast.ai/t/jeremys-harebrained-install-guide/43814

  • 在Ubuntu上,你也可以用Docker安装Swift:https://github.com/apple/swift-docker

现在,让我们快速介绍一下一些基本的Swift函数,然后再进入使用它的数据科学功能。

2.3 打印功能

我相信你用过这个。它的工作方式与Python中非常相似。只需调用print(),在括号内输入你想打印的内容:

2.4 Swift的变量

Swift提供了两个有用的选项来创建变量:let和var.  let用来创建一个"常量",这个常量的值在程序的任何地方都不能改变。var与我们在Python中看到的变量非常相似——你可以在程序的任何时候更改存储在其中的值。

让我们看一个例子来看看区别。创建两个变量a和b:

现在,尝试改变a和b的值:

  • 你会注意到,b能够不报错的更新其值,而a则给出一个错误:

Swift有什么用

这种创建常量与变量的能力非常有用,可以帮助我们防止代码中出现看不见的bug。你将在本文中进一步看到,我们将使用let来创建存储重要信息并且不需要变更值的常量,

这里有一个技巧:使用var来创建你想使用一些中间计算的结果,因为这些中间计算结果需要改变。类似地,使用let来存储训练数据或者结果,这些数据基本上就是你不想更改或弄乱的值。

此外,Swift还有一个很酷的功能,你甚至可以使用表情符号作为变量名!

Swift有什么用

这是因为Swift非常支持Unicode,所以我们可以用希腊字母来创建变量:

2.5 Swift的数据类型

Swift支持所有常见的数据类型,如整数、字符串、浮点数和双精度。我们可以赋值给任何变量,其类型会被Swift自动检测到:

你还可以在创建变量时显式地编写数据类型。这有助于防止程序中的错误,因为如果类型不匹配。Swift将抛出一个错误:

  • 可以做个小测验。创建一个显式类型为"Float"的值为4的常量,结果是会报错的。

有一种简单的方法可以将变量的值包含在字符串中,方法是将变量放在括号中,并在括号前写入反斜杠()。例如:

Swift有什么用

可以对占用多行的字符串使用三个双引号(""")。

2.6 列表和字典

Swift支持列表和字典数据结构,就像Python一样(这又是一个比较!)这里与Python不同,我们不需要像字典的"{}"和列表的"[]"这样的单独语法。

让我们用Swift创建一个列表和字典:

  • 我们可以通过在"[]"括号内写入索引或者键来访问列表或字典的元素(类似于Python):

上面的代码将把"Jayne"和"Public Relations"的键值对添加到字典中。如果你打印以上的字典以下就是输出:

Swift有什么用

2.7 使用循环

循环是任何编程语言最重要的特性之一,Swift不会让你失望。它不仅支持所有传统的循环机制(for、while等),而且还实现了它自己的一些变体。

for..in 循环

非常类似于Python,你可以使用在Swift中的list或者range使用for循环:

Swift有什么用

第一个例子中的三个点表示Swift中的"range"。如果我们想做a到b范围内的事情,我们会使用a…b的语法。

类似地,如果我们想不要最后一个数字,我们可以把这三个点改成"..<"像"a.."。

这里需要注意的另一点是,与Python不同,Swift不使用缩进的概念,而是使用花括号"{}"来表示代码层次结构。

你可以在Swift中以类似的方式使用while和其他类型的循环。你可以这里了解更多关于循环的信息:https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html

2.8 条件(if-else)

Swift支持条件语句,如if, if..else, if..else..if,  嵌套if甚至switch语句(Python不支持)。if语句的语法非常简单:

  • boolean_expression可以是任何比较,只有在比较结果或表达式的计算结果为true时,才会执行if块中编写的语句。你可以在这里阅读其他条件语句:https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html。

2.9 函数

Swift函数在语法上与Python中的函数非常相似。这里的主要区别是我们使用了func关键字而不是def,并且我们明确地提到了参数的数据类型和函数的返回类型。

一个基本的函数如下:

Swift有什么用

和条件语句一样,我们使用花括号"{}"来表示属于这个函数的代码块。

2.10 用代码编写注释

编写注释是优秀代码最重要的方面之一。这适用于任何行业。这是你应该学习的最重要的编程技巧!

在你的代码里包含注释文本,作为对自己的注释或提醒。注释在编译时会被Swift忽略。

单行注释以两个斜杠(//)开头:

  • 多行注释以一个前斜杠和一个星号()结束:

  • 现在你已经熟悉了Swift的基础知识,让我们来学习一个有趣的功能&mdash;&mdash;在Swift中使用Python库!

3.在Swift中使用Python库

Swift支持与Python的互操作性。这意味着你可以从Swift导入有用的Python库,调用它们的函数,并在Swift和Python之间无缝地切换。

这给了Swift的数据科学生态系统不可思议的力量。这个生态系统还很年轻,还在发展中,你已经可以使用成熟的库,如Numpy、panda和Python的Matplotlib来填补现有Swift产品的空白。

为了在Swift中使用Python的模块,你可以直接导入Python并加载任何你想要使用的库!

这与你在Python中使用NumPy的方式非常相似,不是吗?你可以对其他包做同样的事情,如matplotlib:

Swift有什么用

你已经学了不少关于Swift的东西。现在是时候构建你的第一个模型了!

4.使用TensorFlow建立Swift的基本模型

Swift有什么用

Swift4Tensorflow是Swift开源生态系统中最成熟的库之一。我们可以使用一个非常简单的keras类语法很容易的建立机器学习和深度学习模型。

它变得更加有趣!Swift4Tensorflow不仅仅是对TensorFlow的快速包装,它还被开发为该语言本身的一个特性。人们普遍认为,在不久的将来,它将成为该语言的核心部分。

这意味着来自苹果公司的Swift团队和谷歌的Tensorflow团队的工程师将确保你能够在Swift中进行高性能的机器学习。

该库还向Swift添加了许多有用的特性,比如对自动微分的原生支持(这让我想起了PyTorch中的Autograd),从而使它与数值计算更加兼容。

Swift有什么用

4.1 关于数据集

让我们来理解一下我们将在本节中使用的问题陈述。如果你以前接触过深度学习领域,你可能对它很熟悉。

我们将构建一个卷积神经网络(CNN)模型,使用MNIST数据集将图像分类为数字。该数据集包含6万张训练图像和1万张手写数字测试图像,可用于训练图像分类模型:

Swift有什么用

这个数据集是处理计算机视觉问题的一个相当常见的数据集,所以我不打算详细描述它。

4.2 开始项目

在开始构建模型之前,我们需要下载数据集并对其进行预处理。为了方便你,我已经创建了一个GitHub存储库,里面预处理了代码和数据

下载安装代码,下载数据集,导入必要的库:

  • 你的数据集现在将在Colab上下载。让我们加载数据集:

4.3 加载数据集

4.4 探索MNIST

我们将从数据集绘制一些图像,以了解我们的工作是什么:

这是我们的图像是这样的:

Swift有什么用

看起来很直观,对吧?第一个数字是手写的0,第二个数字是4。

4.5 定义模型的结构

现在让我们定义模型的体系结构。我使用的是LeNet-5架构,这是一个非常基础的CNN模型,使用了2个卷积层,平均池化层和3个全连接层。

最后一个全连接层的形状是10,因为我们有10个目标类,每个数字一个从0到9:

  • 你可能已经注意到,这些代码看起来非常类似于Keras、PyTorch或TensorFlow等Python框架中。

  • 编写代码的简单性是Swift最大的卖点之一。

  • Swift4Tensorflow你可以在这里阅读更多关于它的信息:https://www.tensorflow.org/swift/api_docs/Structs

4.6 选择梯度下降作为优化器

类似地,我们需要一个优化器函数来训练我们的模型。我们将使用Swift4Tensorflow中提供的随机梯度下降(SGD):

Swift4Tensorflow支持许多额外的优化器。你可以根据你的项目选择:

  • AMSGrad

  • AdaDelta

  • AdaGrad

  • AdaMax

  • Adam

  • Parameter

  • RMSProp

  • SGD

4.7 模型训练

现在一切都设置好了,让我们来训练模型!

上面的代码运行一个训练循环,该循环将数据集示例提供给模型,以帮助它做出更好的预测。以下是我们的训练步骤:

  1. 鸿蒙官方战略合作共建——HarmonyOS技术社区

  2. 我们迭代每个epoch。epoch是遍历整个数据集的次数。

  3. 在epoch中,我们遍历训练数据集中的每个样本,获取其特征(x)和标签(y),这对于下一步非常重要。

  4. 利用例子的特征,我们做了一个预测,并与真实标签进行了比较。这是用来计算模型的损失和梯度。

  5. 这时使用梯度下降法来更新模型中的变量。

  6. 记录一些训练数据,以便以后能看到它们。

  7. 为每个epoch重复步骤1到5。

epochCount变量是遍历数据集集合的次数。

你花了多少epoch才在测试集上达到90%以上的准确率?

我在12个epoch内,在训练和测试集的准确率都达到了97%以上。

Swift有什么用

4.8 可视化训练和测试数据

虽然打印出模型的训练进度很有帮助,但是看到可视化图像通常更有帮助。

让我们将在模型训练期间捕获的训练和测试统计数据可视化

这是训练和测试精度在训练过程中的演变过程:

Swift有什么用

5.数据科学Swift的未来

行业专家们对Swift的反应是令人难以置信的,感觉它不仅有潜力成为数据科学的主流语言,而且它也是用于在现实世界构建基于机器学习的应用程序。

目前,它还处于起步阶段,围绕数据科学和数值计算的库仍在发展中。然而,它背后有强大的行业支持,我期待着未来它将拥有一个丰富的工具和库生态系统(甚至可能比现在的Python更好)。

关于“Swift有什么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: Swift有什么用

本文链接: https://lsjlt.com/news/284655.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Swift有什么用
    这篇文章将为大家详细讲解有关Swift有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.为什么选择SwiftPyTorch是为了克服Tensorflow中的限制。但现在我们正接近Python的极限...
    99+
    2023-06-16
  • swift元组和数组有什么区别
    Swift元组和数组在Swift语言中都用来存储多个值,但它们有以下区别:1. 类型:数组(Array)是同种类型的元素的有序集合,...
    99+
    2023-10-19
    swift
  • Swift中的高阶函数功能有什么作用
    这篇“Swift中的高阶函数功能有什么作用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Swift中的高阶函数功能有什么作用...
    99+
    2023-07-05
  • 视频音频转换器Swift Converter for Mac有什么用
    这篇文章将为大家详细讲解有关视频音频转换器Swift Converter for Mac有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Swift Converter for Mac是Mac平台上一...
    99+
    2023-06-05
  • 详解Swift 之clipped是什么如何用
    clipped()函数介绍 Clips the view to its bounding rectangular frame. 将View裁剪成矩形 By default, a ...
    99+
    2022-05-20
    Swift clipped
  • OpenStack中Swift组件的作用是什么
    OpenStack中Swift组件的作用是什么?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一:简介背景Swift 最初是由 Rackspace 公司开发的高可用分布式对象存储...
    99+
    2023-06-14
  • Swift Set集合怎么用
    这篇文章将为大家详细讲解有关Swift Set集合怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1. 创建Set集合// 创建Setvar set: Set<In...
    99+
    2023-06-25
  • Swift字符怎么使用
    这篇文章主要讲解了“Swift字符怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Swift字符怎么使用”吧!导读Swift 是一种支持多编程范式和编译式的开源编程语言Swift 的字...
    99+
    2023-06-03
  • Swift中反射Mirror怎么用
    小编给大家分享一下Swift中反射Mirror怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前言Mirror是Swift中...
    99+
    2024-04-02
  • swift表格控件怎么用
    这篇文章将为大家详细讲解有关swift表格控件怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体内容如下效果图该控件(UITableView) 代码注意的地方:A、ViewController 不单...
    99+
    2023-06-29
  • Swift中Opaque Types怎么使用
    今天小编给大家分享一下Swift中Opaque Types怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。什...
    99+
    2023-07-05
  • Ceph与Swift有哪些区别
    这篇文章给大家分享的是有关Ceph与Swift有哪些区别的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在Ceph与Swift之间,存在一些孰优孰劣的争辩。Ceph在访问数据和存储信息方面提供了更大的灵活性,但这并...
    99+
    2023-06-03
  • Swift Hook的虚函数表的使用原理是什么
    这篇文章主要介绍“Swift Hook的虚函数表的使用原理是什么”,在日常操作中,相信很多人在Swift Hook的虚函数表的使用原理是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望...
    99+
    2024-04-02
  • Swift中数组及常用方法有哪些
    这篇文章主要介绍了Swift中数组及常用方法有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1. 创建数组// 创建整型数组var array1:&n...
    99+
    2023-06-25
  • Swift的Mirror反射怎么使用
    这篇文章主要介绍了Swift的Mirror反射怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Swift的Mirror反射怎么使用文章都会有所收获,下面我们一起来看看吧。元类型与.selfAnyObjec...
    99+
    2023-07-02
  • Ubuntu安装配置swift的方法是什么
    本文小编为大家详细介绍“Ubuntu安装配置swift的方法是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Ubuntu安装配置swift的方法是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1.下载最...
    99+
    2023-07-04
  • Swift字面量有哪些类型
    本篇内容介绍了“Swift字面量有哪些类型”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!导读Swift 是一种支持多编程范式和编译式的开源编...
    99+
    2023-06-03
  • Swift 5.9 Macros 有哪些新更新
    文章目录 前言Macros(宏)需要了解的关键信息环境准备创建一个宏定义宏实际使用宏 总结 前言 虽然 Swift 6 已经在地平线上浮现,但 5.x 版本仍然有很多新功能-更简单的 if 和 switch 用法、宏...
    99+
    2023-08-16
    swift 开发语言 蓝桥杯 ios swiftui 原力计划
  • Swift 5.9 有哪些新特性(一)
    文章目录 前言if 和 switch 表达式Value 和 Type 参数包 前言 虽然 Swift 6 已经在地平线上浮现,但 5.x 版本仍然有很多新功能-更简单的 if 和 switch 用法、宏、非可复制类型、自定...
    99+
    2023-08-16
    swift 开发语言 ios 原力计划
  • Swift 5.9 有哪些新特性(二)
    文章目录 前言Noncopyable 结构体和枚举结束变量绑定的生命周期makeStream() 方法添加 sleep(for:) 到 ClockDiscarding task groups总结 前言 虽然 Swift...
    99+
    2023-08-17
    swift 蓝桥杯 开发语言 原力计划
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作