日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
零基礎(chǔ)使用Swift學(xué)習(xí)數(shù)據(jù)科學(xué)

概述

成都一家集口碑和實(shí)力的網(wǎng)站建設(shè)服務(wù)商,擁有專業(yè)的企業(yè)建站團(tuán)隊(duì)和靠譜的建站技術(shù),十余年企業(yè)及個(gè)人網(wǎng)站建設(shè)經(jīng)驗(yàn) ,為成都上千客戶提供網(wǎng)頁設(shè)計(jì)制作,網(wǎng)站開發(fā),企業(yè)網(wǎng)站制作建設(shè)等服務(wù),包括成都營銷型網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),同時(shí)也為不同行業(yè)的客戶提供成都網(wǎng)站制作、做網(wǎng)站的服務(wù),包括成都電商型網(wǎng)站制作建設(shè),裝修行業(yè)網(wǎng)站制作建設(shè),傳統(tǒng)機(jī)械行業(yè)網(wǎng)站建設(shè),傳統(tǒng)農(nóng)業(yè)行業(yè)網(wǎng)站制作建設(shè)。在成都做網(wǎng)站,選網(wǎng)站制作建設(shè)服務(wù)商就選創(chuàng)新互聯(lián)。

  • Swift正迅速成為數(shù)據(jù)科學(xué)中強(qiáng)大又有效的語言之一
  • Swift與Python非常相似,所以你會(huì)發(fā)現(xiàn)2種語言的轉(zhuǎn)換非常平滑
  • 我們將介紹Swift的基礎(chǔ)知識(shí),并學(xué)習(xí)如何使用該語言構(gòu)建你的第一個(gè)數(shù)據(jù)科學(xué)模型

介紹

Python被廣泛認(rèn)為是數(shù)據(jù)科學(xué)中最好、最有效的語言。近年來我遇到的大多數(shù)調(diào)查都將Python列為這個(gè)領(lǐng)域的領(lǐng)導(dǎo)者。

但事實(shí)是數(shù)據(jù)科學(xué)是一個(gè)廣闊并且不斷發(fā)展的領(lǐng)域。我們用來構(gòu)建數(shù)據(jù)科學(xué)模型的語言也會(huì)隨之發(fā)展。還記得R是什么時(shí)候的流行語言嗎?它很快就被Python超越了。Julia語言去年也出現(xiàn)在數(shù)據(jù)科學(xué)中。目前現(xiàn)在有另一種語言正在蓬勃發(fā)展。

是的,我說的是Swift語言。

"我總是希望當(dāng)我開始學(xué)習(xí)一門新語言的時(shí)候,會(huì)有一些開闊思維的新想法,這點(diǎn)Swift絕對(duì)不會(huì)讓我失望。Swift易于解釋,并且靈活,簡潔,安全,易于使用,快速。大多數(shù)其他語言在這些方面都有很大的限制。"——Jeremy Howard

當(dāng)Jeremy Howard認(rèn)可一種語言并開始在日常的數(shù)據(jù)科學(xué)工作中使用該語言時(shí),你有必要開始思考這個(gè)語言的優(yōu)點(diǎn)了。

在本文中,我們將了解Swift作為一種編程語言,以及它如何適應(yīng)數(shù)據(jù)科學(xué)領(lǐng)域。如果你是Python用戶,你將注意到兩者之間的細(xì)微差別和驚人的相似之處。這里也有很多代碼,讓我們開始吧!

目錄

  1. 為什么選擇Swift?
  2. 數(shù)據(jù)分析的Swift基礎(chǔ)
  3. 在Swift中使用Python庫
  4. Swift中使用TensorFlow建立基本模型
  5. 數(shù)據(jù)科學(xué)Swift的未來

1.為什么選擇Swift?

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

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

Swift快,很接近C的速度了

同時(shí),它有一個(gè)非常簡單和可讀的語法,非常類似Python:

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

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

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

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

以下是Jeremy Howard對(duì)Swift的評(píng)價(jià)視頻:https://youtu.be/drSpCwDFwnM

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

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

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

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

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

開源生態(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 ,coreml,transformer,可以讓我們?cè)趇Phone上運(yùn)行最文本生成模型,比如GPT-2、BERT等。

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

這兩個(gè)生態(tài)系統(tǒng)之間存在多種差異。但最重要的是,為了使用蘋果的生態(tài)系統(tǒng),你需要有一臺(tái)蘋果的機(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)太多時(shí)間。

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

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

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

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

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

  • 如果你想在本地系統(tǒng)上安裝Swift,你可以按照安裝說明操作:https://swift.org/getting-started/#using-the-repl
  • 在Ubuntu上安裝Jupyter筆記本,請(qǐng)參考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 打印功能

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

2.4 Swift的變量

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

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

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

  • 你會(huì)注意到,b能夠不報(bào)錯(cuò)的更新其值,而a則給出一個(gè)錯(cuò)誤:

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

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

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

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

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

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

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

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

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

可以對(duì)占用多行的字符串使用三個(gè)雙引號(hào)(""")。

2.6 列表和字典

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

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

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

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

2.7 使用循環(huán)

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

for..in 循環(huán)

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

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

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

這里需要注意的另一點(diǎn)是,與Python不同,Swift不使用縮進(jìn)的概念,而是使用花括號(hào)"{}"來表示代碼層次結(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á)式的計(jì)算結(jié)果為true時(shí),才會(huì)執(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ù)的返回類型。

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

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

2.10 用代碼編寫注釋

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

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

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

  • 多行注釋以一個(gè)前斜杠和一個(gè)星號(hào)(/*)開始,以一個(gè)星號(hào)和一個(gè)前斜杠(*/)結(jié)束:
  • 現(xiàn)在你已經(jīng)熟悉了Swift的基礎(chǔ)知識(shí),讓我們來學(xué)習(xí)一個(gè)有趣的功能——在Swift中使用Python庫!

3.在Swift中使用Python庫

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

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

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

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

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

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

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

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

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

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

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

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

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

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

4.2 開始項(xiàng)目

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

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

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

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

4.4 探索MNIST

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

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

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

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

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

最后一個(gè)全連接層的形狀是10,因?yàn)槲覀冇?0個(gè)目標(biāo)類,每個(gè)數(shù)字一個(gè)從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)化器

類似地,我們需要一個(gè)優(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)行一個(gè)訓(xùn)練循環(huán),該循環(huán)將數(shù)據(jù)集示例提供給模型,以幫助它做出更好的預(yù)測。以下是我們的訓(xùn)練步驟:

  1. 我們迭代每個(gè)epoch。epoch是遍歷整個(gè)數(shù)據(jù)集的次數(shù)。
  2. 在epoch中,我們遍歷訓(xùn)練數(shù)據(jù)集中的每個(gè)樣本,獲取其特征(x)和標(biāo)簽(y),這對(duì)于下一步非常重要。
  3. 利用例子的特征,我們做了一個(gè)預(yù)測,并與真實(shí)標(biāo)簽進(jìn)行了比較。這是用來計(jì)算模型的損失和梯度。
  4. 這時(shí)使用梯度下降法來更新模型中的變量。
  5. 記錄一些訓(xùn)練數(shù)據(jù),以便以后能看到它們。
  6. 為每個(gè)epoch重復(fù)步驟1到5。

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

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

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

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

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

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

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

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

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

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

這里有幾個(gè)Swift的庫,你可以進(jìn)一步探索:

  • Nifty (Demo):這是一個(gè)通用的Swift編程語言的數(shù)值計(jì)算庫。
  • Github
  • Swiftplot:用于數(shù)據(jù)可視化的Swift庫。
  • Github
  • Swift的TensorFlow:是下一代機(jī)器學(xué)習(xí)平臺(tái)。
  • Github

網(wǎng)站欄目:零基礎(chǔ)使用Swift學(xué)習(xí)數(shù)據(jù)科學(xué)
本文來源:http://www.dlmjj.cn/article/djhisdd.html