真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Swift有什么用

這篇文章將為大家詳細(xì)講解有關(guān)Swift有什么用,小編覺得挺實(shí)用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

創(chuàng)新互聯(lián)公司專注于義安網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供義安營銷型網(wǎng)站建設(shè),義安網(wǎng)站制作、義安網(wǎng)頁設(shè)計、義安網(wǎng)站官網(wǎng)定制、小程序設(shè)計服務(wù),打造義安網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供義安網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

1.為什么選擇Swift?

PyTorch是為了克服Tensorflow中的限制。但現(xiàn)在我們正接近Python的極限,而Swift有可能填補(bǔ)這一空白。"——Jeremy  Howard

最近,Swift作為一種數(shù)據(jù)科學(xué)語言引起了很多人的興奮和關(guān)注。每個人都在談?wù)撍R韵率悄銘?yīng)該學(xué)習(xí)Swift的幾個理由:

Swift快,很接近C的速度了

同時,它有一個非常簡單和可讀的語法,非常類似Python:

Swift有什么用

與Python相比,Swift是一種更高效、更穩(wěn)定、更安全的編程語言

這也是一種很好的移動語言。事實(shí)上,它是為iPhone開發(fā)iOS應(yīng)用程序的官方語言

它對自動微分有強(qiáng)大的集成支持,這使它成為為數(shù)不多的用于數(shù)值計算的高級語言之一

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

以下是Jeremy Howard對Swift的評價視頻:https://youtu.be/drSpCwDFwnM

2.數(shù)據(jù)分析的Swift基礎(chǔ)

在我們開始使用Swift執(zhí)行數(shù)據(jù)科學(xué)的細(xì)節(jié)之前,讓我們簡要介紹一下Swift編程語言的基礎(chǔ)知識。

2.1 Swift的生態(tài)系統(tǒng)

當(dāng)前數(shù)據(jù)科學(xué)的Swift主要由兩個生態(tài)系統(tǒng)組成:

  • 開源生態(tài)系統(tǒng)

  • 蘋果的生態(tài)系統(tǒng)

Swift有什么用

開源生態(tài)系統(tǒng)是我們可以下載并在任何操作系統(tǒng)或機(jī)器上運(yùn)行Swift的地方。我們可以使用非??岬腟wift庫來構(gòu)建機(jī)器學(xué)習(xí)應(yīng)用程序,比如用于TensorFlow的Swift、SwiftAI和SwiftPlot。

Swift還允許我們無縫地從Python中導(dǎo)入成熟的數(shù)據(jù)科學(xué)庫,如NumPy、panda、matplotlib和scikit-learn。

另一方面,蘋果的生態(tài)系統(tǒng)本身就令人印象深刻。有一些有用的庫,比如CoreML,可以讓我們用Python來訓(xùn)練大型模型,并直接將它們導(dǎo)入到Swift中進(jìn)行推理。此外,它還提供了大量的預(yù)先訓(xùn)練過的先進(jìn)模型,我們可以直接使用它們來構(gòu)建iOS/macOS應(yīng)用程序。

Swift有什么用

還有其他有趣的庫,比如swift  ,coreml,transformer,可以讓我們在iPhone上運(yùn)行最先進(jìn)的文本生成模型,比如GPT-2、BERT等。

Swift有什么用

當(dāng)你需要為Apple設(shè)備構(gòu)建基于機(jī)器學(xué)習(xí)的應(yīng)用程序時,還有許多其他的庫可以提供良好的功能。

這兩個生態(tài)系統(tǒng)之間存在多種差異。但最重要的是,為了使用蘋果的生態(tài)系統(tǒng),你需要有一臺蘋果的機(jī)器,你只能為蘋果的設(shè)備開發(fā),如iOS, macOS等。

既然你已經(jīng)有了Swift作為數(shù)據(jù)科學(xué)語言的概述,讓我們進(jìn)入代碼吧!

2.2 為Swift設(shè)置環(huán)境

Swift可用于谷歌Colab與GPU和TPU版本。我們將使用它,以便你可以快速跟上它的速度,而不必在安裝過程中花費(fèi)太多時間。

Swift有什么用

你可以按照下面的步驟打開一個Colab筆記本,這是快速激活的:

  • 打開一個空白的Swift筆記本(https://colab.research.google.com/github/tensorflow/swift/blob/master/notebooks/blank_swift.ipynb)

點(diǎn)擊"File",然后選擇"Save a copy in Drive"-這將保存一個新的Swift筆記本在你自己的谷歌驅(qū)動器上!

Swift有什么用

已經(jīng)準(zhǔn)備好開始寫Swift代碼了,一下是第一行:

如果你想在你自己的系統(tǒng)上使用Swift,那么這里有一些你可以打開的鏈接:

  • 如果你想在本地系統(tǒng)上安裝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

現(xiàn)在,讓我們快速介紹一下一些基本的Swift函數(shù),然后再進(jìn)入使用它的數(shù)據(jù)科學(xué)功能。

2.3 打印功能

我相信你用過這個。它的工作方式與Python中非常相似。只需調(diào)用print(),在括號內(nèi)輸入你想打印的內(nèi)容:

2.4 Swift的變量

Swift提供了兩個有用的選項(xiàng)來創(chuàng)建變量:let和var.  let用來創(chuàng)建一個"常量",這個常量的值在程序的任何地方都不能改變。var與我們在Python中看到的變量非常相似——你可以在程序的任何時候更改存儲在其中的值。

讓我們看一個例子來看看區(qū)別。創(chuàng)建兩個變量a和b:

現(xiàn)在,嘗試改變a和b的值:

  • 你會注意到,b能夠不報錯的更新其值,而a則給出一個錯誤:

Swift有什么用

這種創(chuàng)建常量與變量的能力非常有用,可以幫助我們防止代碼中出現(xiàn)看不見的bug。你將在本文中進(jìn)一步看到,我們將使用let來創(chuàng)建存儲重要信息并且不需要變更值的常量,

這里有一個技巧:使用var來創(chuàng)建你想使用一些中間計算的結(jié)果,因?yàn)檫@些中間計算結(jié)果需要改變。類似地,使用let來存儲訓(xùn)練數(shù)據(jù)或者結(jié)果,這些數(shù)據(jù)基本上就是你不想更改或弄亂的值。

此外,Swift還有一個很酷的功能,你甚至可以使用表情符號作為變量名!

Swift有什么用

這是因?yàn)镾wift非常支持Unicode,所以我們可以用希臘字母來創(chuàng)建變量:

2.5 Swift的數(shù)據(jù)類型

Swift支持所有常見的數(shù)據(jù)類型,如整數(shù)、字符串、浮點(diǎn)數(shù)和雙精度。我們可以賦值給任何變量,其類型會被Swift自動檢測到:

你還可以在創(chuàng)建變量時顯式地編寫數(shù)據(jù)類型。這有助于防止程序中的錯誤,因?yàn)槿绻愋筒黄ヅ?。Swift將拋出一個錯誤:

  • 可以做個小測驗(yàn)。創(chuàng)建一個顯式類型為"Float"的值為4的常量,結(jié)果是會報錯的。

有一種簡單的方法可以將變量的值包含在字符串中,方法是將變量放在括號中,并在括號前寫入反斜杠()。例如:

Swift有什么用

可以對占用多行的字符串使用三個雙引號(""")。

2.6 列表和字典

Swift支持列表和字典數(shù)據(jù)結(jié)構(gòu),就像Python一樣(這又是一個比較!)這里與Python不同,我們不需要像字典的"{}"和列表的"[]"這樣的單獨(dú)語法。

讓我們用Swift創(chuàng)建一個列表和字典:

  • 我們可以通過在"[]"括號內(nèi)寫入索引或者鍵來訪問列表或字典的元素(類似于Python):

上面的代碼將把"Jayne"和"Public Relations"的鍵值對添加到字典中。如果你打印以上的字典以下就是輸出:

Swift有什么用

2.7 使用循環(huán)

循環(huán)是任何編程語言最重要的特性之一,Swift不會讓你失望。它不僅支持所有傳統(tǒng)的循環(huán)機(jī)制(for、while等),而且還實(shí)現(xiàn)了它自己的一些變體。

for..in 循環(huán)

非常類似于Python,你可以使用在Swift中的list或者range使用for循環(huán):

Swift有什么用

第一個例子中的三個點(diǎn)表示Swift中的"range"。如果我們想做a到b范圍內(nèi)的事情,我們會使用a…b的語法。

類似地,如果我們想不要最后一個數(shù)字,我們可以把這三個點(diǎn)改成"..<"像"a.."。

這里需要注意的另一點(diǎn)是,與Python不同,Swift不使用縮進(jìn)的概念,而是使用花括號"{}"來表示代碼層次結(jié)構(gòu)。

你可以在Swift中以類似的方式使用while和其他類型的循環(huán)。你可以這里了解更多關(guān)于循環(huán)的信息: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可以是任何比較,只有在比較結(jié)果或表達(dá)式的計算結(jié)果為true時,才會執(zhí)行if塊中編寫的語句。你可以在這里閱讀其他條件語句:https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html。

2.9 函數(shù)

Swift函數(shù)在語法上與Python中的函數(shù)非常相似。這里的主要區(qū)別是我們使用了func關(guān)鍵字而不是def,并且我們明確地提到了參數(shù)的數(shù)據(jù)類型和函數(shù)的返回類型。

一個基本的函數(shù)如下:

Swift有什么用

和條件語句一樣,我們使用花括號"{}"來表示屬于這個函數(shù)的代碼塊。

2.10 用代碼編寫注釋

編寫注釋是優(yōu)秀代碼最重要的方面之一。這適用于任何行業(yè)。這是你應(yīng)該學(xué)習(xí)的最重要的編程技巧!

在你的代碼里包含注釋文本,作為對自己的注釋或提醒。注釋在編譯時會被Swift忽略。

單行注釋以兩個斜杠(//)開頭:

  • 多行注釋以一個前斜杠和一個星號(/*)開始,以一個星號和一個前斜杠(*/)結(jié)束:

  • 現(xiàn)在你已經(jīng)熟悉了Swift的基礎(chǔ)知識,讓我們來學(xué)習(xí)一個有趣的功能——在Swift中使用Python庫!

3.在Swift中使用Python庫

Swift支持與Python的互操作性。這意味著你可以從Swift導(dǎo)入有用的Python庫,調(diào)用它們的函數(shù),并在Swift和Python之間無縫地切換。

這給了Swift的數(shù)據(jù)科學(xué)生態(tài)系統(tǒng)不可思議的力量。這個生態(tài)系統(tǒng)還很年輕,還在發(fā)展中,你已經(jīng)可以使用成熟的庫,如Numpy、panda和Python的Matplotlib來填補(bǔ)現(xiàn)有Swift產(chǎn)品的空白。

為了在Swift中使用Python的模塊,你可以直接導(dǎo)入Python并加載任何你想要使用的庫!

這與你在Python中使用NumPy的方式非常相似,不是嗎?你可以對其他包做同樣的事情,如matplotlib:

Swift有什么用

你已經(jīng)學(xué)了不少關(guān)于Swift的東西?,F(xiàn)在是時候構(gòu)建你的第一個模型了!

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

Swift有什么用

Swift4Tensorflow是Swift開源生態(tài)系統(tǒng)中最成熟的庫之一。我們可以使用一個非常簡單的keras類語法很容易的建立機(jī)器學(xué)習(xí)和深度學(xué)習(xí)模型。

它變得更加有趣!Swift4Tensorflow不僅僅是對TensorFlow的快速包裝,它還被開發(fā)為該語言本身的一個特性。人們普遍認(rèn)為,在不久的將來,它將成為該語言的核心部分。

這意味著來自蘋果公司的Swift團(tuán)隊和谷歌的Tensorflow團(tuán)隊的工程師將確保你能夠在Swift中進(jìn)行高性能的機(jī)器學(xué)習(xí)。

該庫還向Swift添加了許多有用的特性,比如對自動微分的原生支持(這讓我想起了PyTorch中的Autograd),從而使它與數(shù)值計算更加兼容。

Swift有什么用

4.1 關(guān)于數(shù)據(jù)集

讓我們來理解一下我們將在本節(jié)中使用的問題陳述。如果你以前接觸過深度學(xué)習(xí)領(lǐng)域,你可能對它很熟悉。

我們將構(gòu)建一個卷積神經(jīng)網(wǎng)絡(luò)(CNN)模型,使用MNIST數(shù)據(jù)集將圖像分類為數(shù)字。該數(shù)據(jù)集包含6萬張訓(xùn)練圖像和1萬張手寫數(shù)字測試圖像,可用于訓(xùn)練圖像分類模型:

Swift有什么用

這個數(shù)據(jù)集是處理計算機(jī)視覺問題的一個相當(dāng)常見的數(shù)據(jù)集,所以我不打算詳細(xì)描述它。

4.2 開始項(xiàng)目

在開始構(gòu)建模型之前,我們需要下載數(shù)據(jù)集并對其進(jìn)行預(yù)處理。為了方便你,我已經(jīng)創(chuàng)建了一個GitHub存儲庫,里面預(yù)處理了代碼和數(shù)據(jù)

下載安裝代碼,下載數(shù)據(jù)集,導(dǎo)入必要的庫:

  • 你的數(shù)據(jù)集現(xiàn)在將在Colab上下載。讓我們加載數(shù)據(jù)集:

4.3 加載數(shù)據(jù)集

4.4 探索MNIST

我們將從數(shù)據(jù)集繪制一些圖像,以了解我們的工作是什么:

這是我們的圖像是這樣的:

Swift有什么用

看起來很直觀,對吧?第一個數(shù)字是手寫的0,第二個數(shù)字是4。

4.5 定義模型的結(jié)構(gòu)

現(xiàn)在讓我們定義模型的體系結(jié)構(gòu)。我使用的是LeNet-5架構(gòu),這是一個非?;A(chǔ)的CNN模型,使用了2個卷積層,平均池化層和3個全連接層。

最后一個全連接層的形狀是10,因?yàn)槲覀冇?0個目標(biāo)類,每個數(shù)字一個從0到9:

  • 你可能已經(jīng)注意到,這些代碼看起來非常類似于Keras、PyTorch或TensorFlow等Python框架中。

  • 編寫代碼的簡單性是Swift最大的賣點(diǎn)之一。

  • Swift4Tensorflow你可以在這里閱讀更多關(guān)于它的信息:https://www.tensorflow.org/swift/api_docs/Structs

4.6 選擇梯度下降作為優(yōu)化器

類似地,我們需要一個優(yōu)化器函數(shù)來訓(xùn)練我們的模型。我們將使用Swift4Tensorflow中提供的隨機(jī)梯度下降(SGD):

Swift4Tensorflow支持許多額外的優(yōu)化器。你可以根據(jù)你的項(xiàng)目選擇:

  • AMSGrad

  • AdaDelta

  • AdaGrad

  • AdaMax

  • Adam

  • Parameter

  • RMSProp

  • SGD

4.7 模型訓(xùn)練

現(xiàn)在一切都設(shè)置好了,讓我們來訓(xùn)練模型!

上面的代碼運(yùn)行一個訓(xùn)練循環(huán),該循環(huán)將數(shù)據(jù)集示例提供給模型,以幫助它做出更好的預(yù)測。以下是我們的訓(xùn)練步驟:

  1. 鴻蒙官方戰(zhàn)略合作共建——HarmonyOS技術(shù)社區(qū)

  2. 我們迭代每個epoch。epoch是遍歷整個數(shù)據(jù)集的次數(shù)。

  3. 在epoch中,我們遍歷訓(xùn)練數(shù)據(jù)集中的每個樣本,獲取其特征(x)和標(biāo)簽(y),這對于下一步非常重要。

  4. 利用例子的特征,我們做了一個預(yù)測,并與真實(shí)標(biāo)簽進(jìn)行了比較。這是用來計算模型的損失和梯度。

  5. 這時使用梯度下降法來更新模型中的變量。

  6. 記錄一些訓(xùn)練數(shù)據(jù),以便以后能看到它們。

  7. 為每個epoch重復(fù)步驟1到5。

epochCount變量是遍歷數(shù)據(jù)集集合的次數(shù)。

你花了多少epoch才在測試集上達(dá)到90%以上的準(zhǔn)確率?

我在12個epoch內(nèi),在訓(xùn)練和測試集的準(zhǔn)確率都達(dá)到了97%以上。

Swift有什么用

4.8 可視化訓(xùn)練和測試數(shù)據(jù)

雖然打印出模型的訓(xùn)練進(jìn)度很有幫助,但是看到可視化圖像通常更有幫助。

讓我們將在模型訓(xùn)練期間捕獲的訓(xùn)練和測試統(tǒng)計數(shù)據(jù)可視化。

這是訓(xùn)練和測試精度在訓(xùn)練過程中的演變過程:

Swift有什么用

5.數(shù)據(jù)科學(xué)Swift的未來

行業(yè)專家們對Swift的反應(yīng)是令人難以置信的,感覺它不僅有潛力成為數(shù)據(jù)科學(xué)的主流語言,而且它也是用于在現(xiàn)實(shí)世界構(gòu)建基于機(jī)器學(xué)習(xí)的應(yīng)用程序。

目前,它還處于起步階段,圍繞數(shù)據(jù)科學(xué)和數(shù)值計算的庫仍在發(fā)展中。然而,它背后有強(qiáng)大的行業(yè)支持,我期待著未來它將擁有一個豐富的工具和庫生態(tài)系統(tǒng)(甚至可能比現(xiàn)在的Python更好)。

關(guān)于“Swift有什么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。


本文名稱:Swift有什么用
瀏覽地址:http://weahome.cn/article/pgegcd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部