深度學(xué)習(xí)基礎(chǔ)及應(yīng)用(人工智能、大數(shù)據(jù)技術(shù)、計算機等相關(guān)專業(yè))全套教學(xué)課件_第1頁
深度學(xué)習(xí)基礎(chǔ)及應(yīng)用(人工智能、大數(shù)據(jù)技術(shù)、計算機等相關(guān)專業(yè))全套教學(xué)課件_第2頁
深度學(xué)習(xí)基礎(chǔ)及應(yīng)用(人工智能、大數(shù)據(jù)技術(shù)、計算機等相關(guān)專業(yè))全套教學(xué)課件_第3頁
深度學(xué)習(xí)基礎(chǔ)及應(yīng)用(人工智能、大數(shù)據(jù)技術(shù)、計算機等相關(guān)專業(yè))全套教學(xué)課件_第4頁
深度學(xué)習(xí)基礎(chǔ)及應(yīng)用(人工智能、大數(shù)據(jù)技術(shù)、計算機等相關(guān)專業(yè))全套教學(xué)課件_第5頁
已閱讀5頁,還剩539頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

深度學(xué)習(xí)基礎(chǔ)及應(yīng)用全套可編輯PPT課件項目一搭建深度學(xué)習(xí)開發(fā)環(huán)境項目二

夯實深度學(xué)習(xí)開發(fā)基礎(chǔ)項目三

構(gòu)建神經(jīng)網(wǎng)絡(luò)項目四

利用卷積神經(jīng)網(wǎng)絡(luò)進行圖像處理項目五

利用循環(huán)神經(jīng)網(wǎng)絡(luò)進行文本預(yù)測和分類項目六利用生成對抗神經(jīng)網(wǎng)絡(luò)進行圖像生成項目七

利用遷移學(xué)習(xí)進行圖像分類項目八交通標志識別全課導(dǎo)航項目一

搭建深度學(xué)習(xí)開發(fā)環(huán)境項目目標掌握人工智能、機器學(xué)習(xí)和深度學(xué)習(xí)的基本概念及它們之間的關(guān)系。了解深度學(xué)習(xí)的主要應(yīng)用領(lǐng)域。了解深度學(xué)習(xí)的主流框架。能夠成功搭建深度學(xué)習(xí)的開發(fā)環(huán)境。能夠使用JupyterNotebook完成Python程序的編輯、運行和調(diào)試。知識目標技能目標素養(yǎng)目標通過了解我國深度學(xué)習(xí)平臺的發(fā)展,增強民族自信心。養(yǎng)成刻苦、勤奮、好問、獨立思考和細心檢查的學(xué)習(xí)習(xí)慣。項目一

搭建深度學(xué)習(xí)開發(fā)環(huán)境項目描述近幾年,人工智能已經(jīng)真正進入了人們的日常生活,指紋識別、刷臉支付等技術(shù)的使用,極大地改變了人們的生活方式,而這些技術(shù)都要依靠深度學(xué)習(xí)。越來越多的人加入到了深度學(xué)習(xí)的學(xué)習(xí)和開發(fā)中,小旌也想加入其中,于是先從搭建深度學(xué)習(xí)開發(fā)環(huán)境入手。2016年3月,阿爾法圍棋(AlphaGo)與圍棋世界冠軍、職業(yè)九段棋手李世石進行人機大戰(zhàn),最終AlphaGo以4∶1的總比分獲勝,這個事件引起了社會的高度關(guān)注,也把人工智能再一次推向話題頂峰。項目一

搭建深度學(xué)習(xí)開發(fā)環(huán)境項目分析下載安裝Anaconda。從Anaconda的官方網(wǎng)站或者國內(nèi)鏡像網(wǎng)站上(如清華鏡像)下載Anaconda軟件包并安裝。安裝TensorFlow。在“AnacondaPrompt”窗口使用pip命令下載并安裝TensorFlow。使用JupyterNotebook編輯、運行和調(diào)試程序。為了更好地進行深度學(xué)習(xí)的開發(fā),本項目將對相關(guān)知識進行介紹,包括人工智能、機器學(xué)習(xí)和深度學(xué)習(xí)的概念及三者之間的關(guān)系,以及深度學(xué)習(xí)的應(yīng)用領(lǐng)域和主流框架。項目一

搭建深度學(xué)習(xí)開發(fā)環(huán)境問題1:簡述深度學(xué)習(xí)的發(fā)展歷程。項目準備全班學(xué)生以3~5人為一組進行分組,各組選出組長。組長組織組員掃碼觀看“深度學(xué)習(xí)的發(fā)展歷程”和“深度學(xué)習(xí)的應(yīng)用領(lǐng)域”視頻,討論并回答下列問題。問題2:簡述深度學(xué)習(xí)的應(yīng)用領(lǐng)域,并列舉出相關(guān)領(lǐng)域中已發(fā)布的系統(tǒng)或軟件(不少于3個)。搭建深度學(xué)習(xí)開發(fā)環(huán)境項目一章節(jié)導(dǎo)航人工智能、機器學(xué)習(xí)和深度學(xué)習(xí)1.1深度學(xué)習(xí)的應(yīng)用領(lǐng)域1.2深度學(xué)習(xí)的主流框架1.3人工智能、機器學(xué)習(xí)和深度學(xué)習(xí)1.1在1956年的達特茅斯會議上,約翰·麥卡錫等人第一次提出“人工智能”概念,它標志著人工智能學(xué)科的誕生。1.1.1人工智能1.人工智能的概念約翰·麥卡錫(被稱為“人工智能之父”)

什么是人工智能呢?人工智能(artificialintelligence,AI),從字面上進行解釋,主要有“人工”和“智能”兩個部分。人工智能1.人工智能的概念1.1.1“人工”是指人造的、人為的,與自然界中本身存在的天然事物相對應(yīng)?!爸悄堋笔侵橇湍芰Φ目偡Q,它涉及意識、自我、思維(包括無意識的思維)等問題。人工智能是指能夠讓機器或系統(tǒng)像人一樣擁有智力和能力,可以代替人類實現(xiàn)識別、認知、分析和決策等多種功能的技術(shù)。人工智能是自然科學(xué)和社會科學(xué)的交叉學(xué)科,汲取了自然科學(xué)和社會科學(xué)的最新成就,以智能為核心,形成了具有自身研究特點的新體系。人工智能已經(jīng)發(fā)展成為一門由計算機科學(xué)、控制論、信息論、語言學(xué)、神經(jīng)生理學(xué)、心理學(xué)、數(shù)學(xué)和哲學(xué)等多學(xué)科相互融合的綜合性新學(xué)科。人工智能的研究涉及廣泛的領(lǐng)域,如各種知識表示模式、不同的智能搜索技術(shù)、求解數(shù)據(jù)和知識不確定性問題的各種方法、機器學(xué)習(xí)的不同模式等。智能人工智能自然科學(xué)社會科學(xué)1.1.1人工智能2.人工智能的主要研究內(nèi)容與應(yīng)用領(lǐng)域人工智能的主要研究內(nèi)容大體上可以分為以下幾個方面。知識表示把人類的知識概念化、形式化或模型化。運用符號知識、算法和狀態(tài)圖等來描述待解決的問題。知識表示方法主要包括符號表示法和連接機制表示法。知識推理在計算機或智能系統(tǒng)中,依據(jù)推理控制策略,利用形式化的知識模擬人類的智能推理方式進行求解問題的過程。機器學(xué)習(xí)計算機模擬人的學(xué)習(xí)行為,自主獲取新知識,并重新組織已有的知識結(jié)構(gòu),不斷提升自身解決問題的能力。機器學(xué)習(xí)可以通過學(xué)習(xí)文獻資料、與人交談和觀察環(huán)境等方式進行。1.1.1人工智能2.人工智能的主要研究內(nèi)容與應(yīng)用領(lǐng)域應(yīng)用領(lǐng)域隨著人工智能理論研究的發(fā)展,人工智能的應(yīng)用領(lǐng)域越來越寬廣,其應(yīng)用效果也越來越顯著。人工智能的應(yīng)用主要集中在自動定理證明、問題求解與博弈、專家系統(tǒng)、模式識別、機器視覺、自然語言處理、人工神經(jīng)網(wǎng)絡(luò)、分布式人工智能與多Agent等領(lǐng)域。人工智能的應(yīng)用自動定理證明問題求解與博弈專家系統(tǒng)模式識別機器視覺自然語言處理人工神經(jīng)網(wǎng)絡(luò)分布式人工智能與多Agent1.1.1人工智能2.人工智能的主要研究內(nèi)容與應(yīng)用領(lǐng)域是指如果一個程序可以在任務(wù)T上,隨著經(jīng)驗E的增加,效果P也可以隨之增加,則稱這個程序可以從經(jīng)驗中學(xué)習(xí)。湯姆·米切爾1.1.2機器學(xué)習(xí)1.機器學(xué)習(xí)的概念這一定義是由卡內(nèi)基梅隆大學(xué)的教授湯姆·米切爾提出的,該定義目前在學(xué)術(shù)界廣泛使用。機器學(xué)習(xí)(machinelearning,ML)機器學(xué)習(xí)的基本思路:使用一定的算法解析訓(xùn)練數(shù)據(jù);然后學(xué)習(xí)數(shù)據(jù)中存在的一些特征,得到模型;最后使用得到的模型對實際問題做出分類、決策或預(yù)測等,如圖所示。機器學(xué)習(xí)的基本思路1.1.2機器學(xué)習(xí)2.機器學(xué)習(xí)的基本思路以小朋友區(qū)分大象和長頸鹿為例,分析機器學(xué)習(xí)的基本思路。區(qū)分大象和長頸鹿的屬性稱為“特征”。不斷學(xué)習(xí)的過程就是“建?!保瑢W(xué)會了區(qū)分大象和長頸鹿后總結(jié)出來的規(guī)律稱為“模型”。在動物園看到大象和長頸鹿是新的數(shù)據(jù),又稱為“測試集”,將訓(xùn)練好的“模型”應(yīng)用于測試集可以完成分類、決策或預(yù)測等任務(wù)。小朋友看連環(huán)畫父母告訴他:”長鼻子大耳朵的是大象,花斑紋長脖子的是長頸鹿?!辈粩嘀貜?fù)上面的過程,小朋友的大腦在不停地學(xué)習(xí)。當(dāng)小朋友去動物園看到大象和長頸鹿時,他就能夠很快地將大象和長頸鹿區(qū)分開來。連環(huán)畫在機器學(xué)習(xí)中稱為“訓(xùn)練數(shù)據(jù)”“訓(xùn)練數(shù)據(jù)”的集合稱為“訓(xùn)練集”。1.1.2機器學(xué)習(xí)2.機器學(xué)習(xí)的基本思路機器學(xué)習(xí)按照學(xué)習(xí)形式可分為有監(jiān)督學(xué)習(xí)、無監(jiān)督學(xué)習(xí)、半監(jiān)督學(xué)習(xí)和強化學(xué)習(xí)。有監(jiān)督學(xué)習(xí)無監(jiān)督學(xué)習(xí)半監(jiān)督學(xué)習(xí)強化學(xué)習(xí)1.給算法一個數(shù)據(jù)集(樣本);2.給定正確答案(標簽);3.機器通過數(shù)據(jù)集來學(xué)習(xí)正確答案。1.給定的數(shù)據(jù)集沒有“正確答案”,所有的數(shù)據(jù)都是一樣的。2.任務(wù)是從給定的數(shù)據(jù)集中,挖掘出潛在的特征。有監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí)相互結(jié)合的一種學(xué)習(xí)方法,也可以說是介于兩者之間的一種學(xué)習(xí)類型。1.以環(huán)境反饋(獎懲信號)作為輸入;2.以統(tǒng)計和動態(tài)規(guī)劃技術(shù)為指導(dǎo)。3.以目標為導(dǎo)向,從空白狀態(tài)開始,經(jīng)由多個步驟來實現(xiàn)某一維度上的目標最大化。

打敗圍棋世界冠軍、職業(yè)九段棋手李世石的阿爾法圍棋(AlphaGo),使用的是深度學(xué)習(xí)算法和強化學(xué)習(xí)算法。1.1.2機器學(xué)習(xí)3.機器學(xué)習(xí)的分類有監(jiān)督學(xué)習(xí)無監(jiān)督學(xué)習(xí)半監(jiān)督學(xué)習(xí)強化學(xué)習(xí)1.給這些照片打上標簽;2.打好標簽的照片就是“正確答案”;3.機器通過大量學(xué)習(xí),就可以學(xué)會在新照片中識別出貓和狗。1.把一堆貓和狗的照片給機器,不給這些照片打任何標簽;2.通過學(xué)習(xí),機器會把這些照片分為兩類,一類是貓的照片,一類是狗的照片。有監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí)相互結(jié)合的一種學(xué)習(xí)方法,也可以說是介于兩者之間的一種學(xué)習(xí)類型。在訓(xùn)練過程中,不斷去嘗試,錯誤就懲罰,正確就獎勵,由此訓(xùn)練得到的模型在各個狀態(tài)環(huán)境中都是最好的。這種學(xué)習(xí)方式效果非常好,但成本也較高。雖然看上去跟上面的有監(jiān)督學(xué)習(xí)結(jié)果差不多,但是有著本質(zhì)的差別。它強調(diào)如何基于環(huán)境而行動,以取得最大化的預(yù)期利益。以讓機器學(xué)會如何識別貓和狗為例1.1.2機器學(xué)習(xí)3.機器學(xué)習(xí)的分類深度學(xué)習(xí)(deeplearning,DL),是一種實現(xiàn)機器學(xué)習(xí)的技術(shù),是機器學(xué)習(xí)中的一個研究方向。它的概念源于對人工神經(jīng)網(wǎng)絡(luò)的研究,深度學(xué)習(xí)的模型結(jié)構(gòu)是一種包含多個隱藏層的神經(jīng)網(wǎng)絡(luò)?!吧疃取敝傅氖巧窠?jīng)網(wǎng)絡(luò)中包含一系列連續(xù)的層?!皩W(xué)習(xí)”是指訓(xùn)練這個神經(jīng)網(wǎng)絡(luò)的過程。1.1.3深度學(xué)習(xí)1.深度學(xué)習(xí)的概念

什么是深度學(xué)習(xí)呢?人工智能通過研究、設(shè)計和制造智能機器或智能系統(tǒng),模擬人類的智能活動,從而延伸、擴展人類智能。機器學(xué)習(xí)則是人工智能的一個分支,它是實現(xiàn)人工智能的一個核心技術(shù),即以機器學(xué)習(xí)為手段解決人工智能中的規(guī)律、經(jīng)驗、知識獲取問題。機器學(xué)習(xí)包含了很多種不同的算法,深度學(xué)習(xí)就是其中之一,其他算法包括決策樹、支持向量機、樸素貝葉斯等。人工智能、機器學(xué)習(xí)和深度學(xué)習(xí)的關(guān)系1.1.3深度學(xué)習(xí)2.人工智能、機器學(xué)習(xí)和深度學(xué)習(xí)的關(guān)系高手點撥深度學(xué)習(xí)與傳統(tǒng)機器學(xué)習(xí)的區(qū)別傳統(tǒng)機器學(xué)習(xí)描述樣本的特征通常需要由人類專家手動選取和設(shè)計,特征的好壞對泛化性能有至關(guān)重要的影響,而人類專家設(shè)計出好的特征并非易事。傳統(tǒng)機器學(xué)習(xí)在進行圖像分類時,需要人類專家根據(jù)圖像的顏色、輪廓、范圍等特征,提取相應(yīng)的特征值,然后進行機器學(xué)習(xí)訓(xùn)練以得到結(jié)果。深度學(xué)習(xí)與傳統(tǒng)機器學(xué)習(xí)最大的區(qū)別在于兩者提取特征的方式不同。深度學(xué)習(xí)則是通過自身學(xué)習(xí)、分析提取抽象特征,向“全自動數(shù)據(jù)分析”又前進了一步。深度學(xué)習(xí)則是通過對大量訓(xùn)練圖像的學(xué)習(xí),自動確定需要提取的特征信息,甚至還能獲取一些人們意想不到的特征組合來訓(xùn)練模型。將這些提取到的特征再經(jīng)過模型更新等步驟,就可以得到令人滿意的結(jié)果。傳統(tǒng)機器學(xué)習(xí)深度學(xué)習(xí)課堂訓(xùn)練問題一:簡述人工智能、機器學(xué)習(xí)和深度學(xué)習(xí)之間的關(guān)系。問題二:簡述有監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí)的區(qū)別。課堂小結(jié)人工智能的概念人工智能的主要研究內(nèi)容與應(yīng)用領(lǐng)域機器學(xué)習(xí)的概念機器學(xué)習(xí)的基本思路機器學(xué)習(xí)的分類深度學(xué)習(xí)的概念人工智能、機器學(xué)習(xí)和深度學(xué)習(xí)的關(guān)系深度學(xué)習(xí)的應(yīng)用領(lǐng)域1.2圖片識別是使用深度學(xué)習(xí)最早的領(lǐng)域之一,常用于分類問題。神經(jīng)網(wǎng)絡(luò)的輸入為圖片數(shù)據(jù),輸出值為當(dāng)前樣本屬于每個類別的概率分布。通常選取概率值最大的類別作為樣本的預(yù)測類別。從2012年開始,通過對深度學(xué)習(xí)算法的不斷研究,在ImageNet數(shù)據(jù)集上實現(xiàn)圖像分類的錯誤率以較大的幅度遞減,這說明深度學(xué)習(xí)完全突破了傳統(tǒng)機器學(xué)習(xí)算法在圖像分類上的技術(shù)瓶頸,圖像分類問題得到了更好的解決。在圖片識別方面,經(jīng)典的神經(jīng)網(wǎng)絡(luò)模型有VGGNet、GoogleNet、ResNet等。1.2.1計算機視覺1.圖片識別1.2.1計算機視覺2.目標檢測目標檢測是指通過算法自動檢測出圖片中常見物體的大致位置,通常用邊界框表示,并分類出邊界框中物體的類別信息。目標檢測比圖像分類的難度更高,在目標檢測中,不僅要給出包含了哪些物體,還要給出包含物體的具體位置。傳統(tǒng)機器學(xué)習(xí)算法很難抽象出足夠有效的特征,而深度學(xué)習(xí)算法能夠從海量數(shù)據(jù)中自動檢測目標并表達其特征,既可以有效地區(qū)分不同的個體,又可以盡量減少相同個體在不同環(huán)境中的影響。人臉識別廣泛應(yīng)用了目標檢測技術(shù),一般應(yīng)用在娛樂行業(yè)、安防及風(fēng)控行業(yè)等?,F(xiàn)在每款自拍軟件都必備自動對焦和自動美顏功能;在安防、風(fēng)控領(lǐng)域,人臉識別應(yīng)用大大提高了工作效率并節(jié)省了人力成本。此外,人臉識別還可用于賬戶的登錄和保障資金安全,如網(wǎng)銀的人臉識別登錄和支付等。1.2.1計算機視覺2.目標檢測拓展閱讀機器視覺和計算機視覺的區(qū)別概念不同側(cè)重點不同機器視覺就是用機器代替人眼進行測量和判斷。計算機視覺是利用計算機及其輔助設(shè)備來模擬人的視覺功能,實現(xiàn)對客觀世界三維場景的感知、識別和理解。機器視覺側(cè)重工程的應(yīng)用,強調(diào)實時性、高精度和高速度。計算機視覺側(cè)重理論算法的研究,強調(diào)理論。圖像分割是通過算法自動分割并識別出圖片中的內(nèi)容,可以將圖像分割理解為每個像素點的分類問題,分析每個像素點的物體的類別信息。圖像分割主要應(yīng)用于無人駕駛、醫(yī)學(xué)影像診斷、地理信息系統(tǒng)、機器人等。在無人駕駛中,需要為汽車增加必要的感知器,讓它們了解自己所處的環(huán)境,使自動駕駛的汽車可以安全行駛。通過車載攝像頭或激光雷達探查到圖像后,無人駕駛汽車將圖像輸入到模型中,后臺計算機可以自動將圖像分割歸類,以避讓行人和車輛等障礙。1.2.1計算機視覺3.圖像分割深度學(xué)習(xí)已經(jīng)在機器翻譯、文字識別、自動文摘、句法分析、文本分類、信息檢索、信息獲取、信息過濾、中文自動分詞、語音合成等研究方向取得了突出成就,能夠更加智能、自動地提取復(fù)雜特征,如表所示。自然語言處理是研究人類與計算機系統(tǒng)之間用自然語言進行有效通信的各種理論和方法。如何解決計算機系統(tǒng)理解自然語言的問題,一直是人工智能研究領(lǐng)域的重要課題之一。研究方向簡介機器翻譯借助計算機把文字或演講從一種自然語言自動翻譯成另一種自然語言,如將漢語翻譯成英語文字識別借助計算機自動識別印刷體或手寫體文字,將它們轉(zhuǎn)換為可供計算機處理的電子文本,如字符的圖像識別自動文摘利用計算機提煉指定文章的摘要,即自動歸納原文檔的主要內(nèi)容和含義,提煉并形成摘要,如機械文摘自然語言處理的研究方向1.2.2自然語言處理研究方向簡介句法分析運用自然語言的句法和其他相關(guān)知識確定輸入句中各成分的功能,建立一種數(shù)據(jù)結(jié)構(gòu),用于獲取輸入句子的意義文本分類在給定的分類體系和分類標準下,根據(jù)文本內(nèi)容利用計算機自動判別文本類型,實現(xiàn)文本自動歸類信息檢索利用計算機從海量文檔中查找用戶需要的相關(guān)文檔信息獲取利用計算機從大量的文本中自動抽取待定的一類信息(如事件和事實等),并形成結(jié)構(gòu)化數(shù)據(jù),填入數(shù)據(jù)庫中供用戶查詢使用信息過濾利用計算機自動識別和過濾滿足特定條件的文檔信息中文自動分詞使用計算機對中文文本進行詞語的自動切分語音合成將書面文本自動轉(zhuǎn)換成對應(yīng)的語音(續(xù))自然語言處理的研究方向1.2.2自然語言處理語言的理解和生成是一個極為復(fù)雜的解碼和編碼過程。一個能夠理解自然語言的計算機系統(tǒng)看起來就像一個人一樣,它不僅需要有上下文知識和信息,還能用信息發(fā)生器進行推理。理解和書寫語言的計算機系統(tǒng)具有表示上下文知識結(jié)構(gòu)的某些人工智能思想,以及根據(jù)這些知識進行推理的某些技術(shù)。高手點撥深度學(xué)習(xí)在語音識別領(lǐng)域同樣取得了突破性進展。2009年深度學(xué)習(xí)的概念被引入語音識別領(lǐng)域,并對該領(lǐng)域產(chǎn)生了重大影響。短短幾年之間,使用深度學(xué)習(xí)模型的語音識別錯誤率大大降低。深度學(xué)習(xí)之所以有這樣的突破性進展,最主要的原因是其可以自動地從海量數(shù)據(jù)中提取更加復(fù)雜且有效的特征?;谏疃葘W(xué)習(xí)的語音識別已經(jīng)應(yīng)用到了各個領(lǐng)域,如同聲傳譯系統(tǒng)、智能語音輸入法等。同聲傳譯系統(tǒng)不僅能夠?qū)斎氲恼Z音進行識別,還可以將識別出來的結(jié)果翻譯成另外一門語言,并將翻譯好的結(jié)果通過語音合成的方式輸出。1.2.3語音識別素養(yǎng)之窗2018年,首屆中國國際進口博覽會上,騰訊同傳作為官方AI同傳系統(tǒng),為新聞發(fā)布廳與各企業(yè)簽約廳提供了同聲傳譯與雙語會議紀要的服務(wù),順利完成了總計約60多場會議的高質(zhì)量多并發(fā)服務(wù),為5000多名中外記者及來自150多個國家和地區(qū)的機構(gòu),帶來了高效的語言輔助理解和會議紀要快速導(dǎo)出的便利。自然語言處理的研究方向有哪些。課堂訓(xùn)練課堂小結(jié)深度學(xué)習(xí)的應(yīng)用領(lǐng)域:計算機視覺自然語言處理語音識別深度學(xué)習(xí)的主流框架1.3TensorFlow是一款由Google公司推出的開源框架,是目前使用較為廣泛的深度學(xué)習(xí)框架之一,其前身是Google公司的神經(jīng)網(wǎng)絡(luò)算法庫DistBelief。它擁有全面而靈活的生態(tài)系統(tǒng),包含各種工具、庫和社區(qū)資源,被廣泛應(yīng)用于各類機器學(xué)習(xí)算法的編程實現(xiàn)。TensorFlow擁有多層級結(jié)構(gòu),可部署于各類服務(wù)器、個人計算機和移動平臺上并支持CPU、GPU(graphicsprocessingunit)和TPU(tensorprocessingunit)來完成高性能數(shù)值計算。它提供了Python、C++、Java接口來構(gòu)建用戶的程序。TensorFlow由Google公司人工智能團隊開發(fā)和維護,擁有包括TensorFlowHub、TensorFlowLite、TensorFlowResearchCloud等多個項目及各類應(yīng)用程序接口。1.3.1TensorFlow2019年,Google公司推出了TensorFlow2.0。相較于TensorFlow1.x而言,TensorFlow2.x使用完全不同的架構(gòu),不兼容TensorFlow1.x的代碼,同時在編程風(fēng)格、函數(shù)接口設(shè)計等方面也有較大的變化,易用性更好。TensorFlow2.x使用Keras作為高層API,使用了動態(tài)計算圖快速搭建模型、調(diào)試程序;清理了冗余和廢棄的API,如tf.app、tf.flags等,取消了全局變量,采用變量跟蹤機制,使整體流程更加清晰,平緩了學(xué)習(xí)曲線;增強了模型部署能力,訓(xùn)練出的模型可以在其他平臺、移動端、嵌入式設(shè)備、瀏覽器,甚至其他語言平臺部署并使用。1.3.1TensorFlowPyTorch是一款由Facebook人工智能研究院推出的開源Python機器學(xué)習(xí)框架,它的前身是Torch框架。2017年,Torch的研發(fā)團隊推出了PyTorch。PyTorch不是簡單地封裝Torch,以提供Python接口,而是對Torch之上的所有模塊進行了重構(gòu),并新增了先進的自動求導(dǎo)系統(tǒng),成為當(dāng)下最流行的動態(tài)圖框架之一。PyTorch入門簡單,簡潔且高效快速。它與Python語言無縫銜接,處于機器學(xué)習(xí)第一大語言Python的生態(tài)圈中,可使用龐大的Python庫和相關(guān)軟件。它使用了動態(tài)計算圖結(jié)構(gòu),并采用了定制的GPU內(nèi)存分配器,使得深度學(xué)習(xí)模型有最大限度的內(nèi)存效能,能訓(xùn)練更大的深度神經(jīng)網(wǎng)絡(luò)。1.3.2PyTorchPaddlePaddle深度學(xué)習(xí)核心訓(xùn)練和推理框架基礎(chǔ)模型庫端到端開發(fā)套件豐富的工具組件2016年,百度公司推出了PaddlePaddle(也稱為飛槳)。它是中國首個自主研發(fā)、功能完備、開源開放的產(chǎn)業(yè)級深度學(xué)習(xí)平臺。PaddlePaddle集深度學(xué)習(xí)核心訓(xùn)練和推理框架、基礎(chǔ)模型庫、端到端開發(fā)套件及豐富的工具組件于一體。1.3.3PaddlePaddlePaddlePaddle(也稱為飛槳)功能上,它同時支持動態(tài)圖和靜態(tài)圖,能方便地調(diào)試和部署模型,非常適合業(yè)務(wù)應(yīng)用的落地實現(xiàn)。它還支持數(shù)百個節(jié)點的高效并行訓(xùn)練。1.3.3PaddlePaddleCaffe于2003年發(fā)布,是一款由伯克利大學(xué)賈揚清博士主持開發(fā)的清晰、高效的深度學(xué)習(xí)框架。Caffe采用C++編寫,支持命令行、Python和MATLAB接口,既可以在CPU上運行,又可以在GPU上運行。賈揚清博士1.3.4Caffe由于Caffe知名度較高,擁有大量訓(xùn)練好的經(jīng)典模型,如AlexNet、VGGNet、ResNet等,所以廣泛地應(yīng)用于前沿的工業(yè)界和學(xué)術(shù)界,許多提供源碼的深度學(xué)習(xí)論文都使用Caffe作為實現(xiàn)模型的工具。Caffe經(jīng)典模型AlexNetVGGNetResNet應(yīng)用工業(yè)界學(xué)術(shù)界在計算機視覺領(lǐng)域中的應(yīng)用人臉識別圖像分類位置檢測目標追蹤1.3.4Caffe在深度學(xué)習(xí)新時代到來之時,Caffe的局限性也逐漸顯現(xiàn)。盡管目前在GitHub上還能找到許多基于Caffe的項目,但是新的項目已經(jīng)越來越少。2017年4月,F(xiàn)acebook發(fā)布Caffe2,加入了遞歸神經(jīng)網(wǎng)絡(luò)等新功能。2018年3月底,Caffe2并入PyTorch。優(yōu)勢出眾的性能和快速的原型設(shè)計簡潔明了的源代碼局限性難以配置依賴環(huán)境眾多難擴展靈活性缺失Caffe1.3.4Caffe2022年7月,中國信息通信研究院聯(lián)合深度學(xué)習(xí)技術(shù)及應(yīng)用國家工程研究中心發(fā)布了《深度學(xué)習(xí)平臺發(fā)展報告(2022)》。報告指出,以中國自主研發(fā)的飛槳為代表的自主可控全棧平臺和生態(tài)加速了中國技術(shù)普惠與產(chǎn)業(yè)賦能,是構(gòu)建國產(chǎn)化生態(tài)體系的重要一環(huán)。百度飛槳基于我國產(chǎn)業(yè)實踐與應(yīng)用創(chuàng)新需求,在社區(qū)生態(tài)構(gòu)建上持續(xù)發(fā)力、優(yōu)勢漸顯,在平臺服務(wù)規(guī)模和技術(shù)應(yīng)用能力方面更具備領(lǐng)先優(yōu)勢。截至2022年5月,飛槳已累計凝聚477萬名開發(fā)者、服務(wù)18萬家企事業(yè)單位、創(chuàng)建56萬個AI模型。與此同時,華為昇思、曠視天元、之江天樞等深度學(xué)習(xí)平臺,也獲得了快速發(fā)展。素養(yǎng)之窗Caffe在計算機視覺領(lǐng)域中的應(yīng)用都有哪些。課堂訓(xùn)練課堂小結(jié)深度學(xué)習(xí)的主流框架:TensorFlowPyTorchPaddlePaddleCaffe項目實施——搭建深度學(xué)習(xí)開發(fā)環(huán)境Anaconda是一個開源的集成開發(fā)平臺,它集成了Python的開發(fā)環(huán)境及眾多常用的Python包和模塊,如NumPy、Matplotlib等。步驟1

訪問,在打開的Anaconda主頁中選擇“Products”→“AnacondaDistribution”選項,如圖所示。Anaconda主頁1.安裝Anaconda項目實施——搭建深度學(xué)習(xí)開發(fā)環(huán)境側(cè)重點不同步驟2

打開下載頁面,向下拖動滾動條,直到出現(xiàn)Anaconda安裝版本信息,選擇“Windows”→“Python3.9”→“64-BitGraphicalInstaller”選項,下載安裝軟件,如圖所示。下載Anaconda指點迷津用戶也可以從清華鏡像網(wǎng)站上(/anaconda/archive)下載Anaconda,該網(wǎng)站提供了許多Anaconda的歷史版本。1.安裝Anaconda項目實施——搭建深度學(xué)習(xí)開發(fā)環(huán)境步驟3

雙擊下載好的“Anaconda3-2022.05-Windows-x86_64.exe”文件,在打開的對話框中單擊“Next”按鈕,如圖所示。歡迎安裝步驟4

顯示“LicenseAgreement”界面,單擊“IAgree”按鈕,如圖所示。同意安裝許可1.安裝Anaconda項目實施——搭建深度學(xué)習(xí)開發(fā)環(huán)境步驟

5顯示“SelectInstallationType”界面,在“Installfor”列表中勾選“JustMe”單選鈕,然后單擊“Next”按鈕,如圖所示。選擇用戶步驟6顯示“ChooseInstallLocation”界面,直接使用默認路徑,單擊“Next”按鈕,如圖所示。設(shè)置安裝路徑如果系統(tǒng)創(chuàng)建了多個用戶而且都允許使用Anaconda,則勾選“AllUsers”單選鈕。1.安裝Anaconda項目實施——搭建深度學(xué)習(xí)開發(fā)環(huán)境步驟7顯示“AdvancedInstallationOptions”界面,在“AdvancedOptions”列表中勾選“AddAnaconda3tomyPATHenvironmentvariable”和“RegisterAnaconda3asmydefaultPython3.9”復(fù)選框,單擊“Install”按鈕,如圖所示。設(shè)置系統(tǒng)環(huán)境勾選“AddAnaconda3tomyPATHenvironmentvariable”表示把Anaconda3加入環(huán)境變量;勾選“RegisterAnaconda3asmydefaultPython3.9”表示將Anaconda3注冊為默認安裝的Python3.9。指點迷津1.安裝Anaconda項目實施——搭建深度學(xué)習(xí)開發(fā)環(huán)境步驟8安裝完成后單擊“Next”按鈕,最后單擊“Finish”按鈕,完成Anaconda3的安裝。啟動AnacondaPrompt步驟9

單擊“開始”按鈕,選擇“Anaconda3”→“AnacondaPrompt”選項,如圖所示。步驟10在打開的“AnacondaPrompt”窗口中輸入“condalist”命令,按回車鍵,如果顯示很多庫名和版本號列表,說明Anaconda安裝成功了,如圖所示。Anaconda庫名和版本號列表1.安裝Anaconda項目實施——搭建深度學(xué)習(xí)開發(fā)環(huán)境TensorFlow有CPU和GPU兩種安裝版本。下面介紹TensorFlow的CPU版本安裝步驟。步驟1單擊“開始”按鈕,選擇“Anaconda3”→“AnacondaPrompt”選項。2.安裝TensorFlow項目實施——搭建深度學(xué)習(xí)開發(fā)環(huán)境TensorFlow(CPU版本)安裝界面步驟2在打開的“AnacondaPrompt”窗口中輸入“pipinstalltensorflow==2.8.0-i/simple”命令,按回車鍵,開始安裝TensorFlow,如圖所示。指點迷津在命令“pipinstalltensorflow==2.8.0-i/simple”中,“-ihttps:///simple”用于指定下載TensorFlow鏡像文件的源地址,“==2.8.0”用于指定安裝的TensorFlow版本號。2.安裝TensorFlow項目實施——搭建深度學(xué)習(xí)開發(fā)環(huán)境驗證TensorFlow(CPU版本)是否安裝成功步驟3打開命令提示符窗口,輸入“python”并執(zhí)行該命令,進入Python交互式終端。步驟4

在Python交互式終端中輸入并執(zhí)行“importtensorflowastf”語句后,輸入“tf.__version__”語句,按回車鍵,如果顯示TensorFlow的版本號,說明TensorFlow安裝成功,如圖所示。2.安裝TensorFlow項目實施——搭建深度學(xué)習(xí)開發(fā)環(huán)境(1)在安裝TensorFlow的GPU版本之前,需要確定計算機是否有NVIDIA顯卡,并安裝了CUDA(CUDA是NVIDIA推出的用于自家GPU的并行計算框架)和cuDNN(cuDNN是NVIDIA打造的針對深度神經(jīng)網(wǎng)絡(luò)的加速庫)。(2)本教材使用TensorFlow+Keras來搭建深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò),而這里的Keras是架構(gòu)在TensorFlow上的高階API,不需要額外安裝,在使用時通過“tf.keras”引用即可。指點迷津2.安裝TensorFlow項目實施——搭建深度學(xué)習(xí)開發(fā)環(huán)境JupyterNotebook是Anaconda套件中一款開源的Web應(yīng)用程序,用戶可以使用它編寫代碼、公式、解釋性文本和繪圖,并且可以把創(chuàng)建好的文檔進行分享。如何使用JupyterNotebook編寫程序呢?3.使用JupyterNotebook目前,JupyterNotebook已經(jīng)廣泛應(yīng)用于數(shù)據(jù)處理、數(shù)學(xué)模擬、統(tǒng)計建模、機器學(xué)習(xí)等重要領(lǐng)域。項目實施——搭建深度學(xué)習(xí)開發(fā)環(huán)境步驟1

在“AnacondaNavigator”窗口中,單擊“JupyterNotebook”→“Launch”按鈕,如圖所示。在“AnacondaNavigator”窗口中啟動JupyterNotebook3.使用JupyterNotebook步驟2

在默認的瀏覽器中打開JupyterNotebook,如圖所示。JupyterNotebook界面從圖JupyterNotebook界面中可以看到,它的頂部有3個選項卡,分別是“Files”“Running”和“Clusters”。其中,“Files”中列出了所有文件,“Running”中顯示已經(jīng)打開的終端和Notebook運行狀況,“Clusters”則是由IPythonparallel包提供,用于并行計算。高手點撥還可以通過下面兩種方法啟動JupyterNotebook:①單擊“開始”按鈕,選擇“Anaconda3”→“JupyterNotebook”選項;②在Windows命令終端輸入命令“jupyternotebook”。還有其他方法啟動JupyterNotebook嗎?項目實施——搭建深度學(xué)習(xí)開發(fā)環(huán)境步驟3在JupyterNotebook界面中選擇“Files”→“New”→“Python3”選項,如圖所示。在JupyterNotebook中新建一個Python3文件3.使用JupyterNotebook高手點撥在JupyterNotebook界面中,“New”下拉按鈕除了“Python3”選項外,還有“TextFile”“Folder”和“Terminal”3個選項:①選擇“TextFile”選項,會新建一個空白文檔,在其中可以編輯任何字母、單詞和數(shù)字,也可以選擇一種編程語言,然后用該語言編寫腳本;②選擇“Folder”選項,可以創(chuàng)建一個新文件夾,把所需文檔放入其中,也可以修改文件夾的名稱或刪除文件夾;③選擇“Terminal”選項,其工作方式與在個人終端上完全相同,只是將終端嵌入到Web瀏覽器中工作。項目實施——搭建深度學(xué)習(xí)開發(fā)環(huán)境步驟4

以Python3工作方式打開JupyterNotebook,如圖所示。以Python3工作方式新建文檔Notebook名稱菜單欄工具欄代碼單元格指點迷津:當(dāng)以Python3工作方式新建一個文檔時,在JupyterNotebook中會顯示Notebook名稱、菜單欄、工具欄和代碼單元格等。在上圖中,JupyterNotebook將Notebook名稱命名為“Untitled1.ipynb”,單擊“Untitled1.ipynb”會彈出一個對話框,可以對當(dāng)前文檔進行重命名;代碼單元格是默認的單元格類型,用于編寫代碼,單元格類型還有標記單元格、原生單元格和標題單元格。3.使用JupyterNotebook項目實施——搭建深度學(xué)習(xí)開發(fā)環(huán)境步驟5

在代碼單元格中輸入“print('HelloWorld!')”語句,如圖所示。編輯代碼3.使用JupyterNotebook步驟6使用快捷鍵“Shift+Enter”或單擊工具欄中的“運行”按鈕,運行代碼單元格中的代碼,運行結(jié)果顯示在代碼單元格下方,并在運行結(jié)果下方產(chǎn)生一個新的空白代碼單元格,如圖所示。運行代碼項目實施——搭建深度學(xué)習(xí)開發(fā)環(huán)境指點迷津運行代碼還可以使用快捷鍵“Alt+Enter”或“Ctrl+Enter”。其中,快捷鍵“Alt+Enter”是運行當(dāng)前單元格并在下方插入新的空白單元格;快捷鍵“Ctrl+Enter”是運行當(dāng)前單元格并進入命令模式,但不會有新的單元格產(chǎn)生。3.使用JupyterNotebook步驟7

在空白代碼單元格中輸入“%pwd”語句并運行,得到當(dāng)前文件所在位置的絕對路徑,如圖所示。使用魔術(shù)命令高手點撥JupyterNotebook提供了魔術(shù)命令,完成一些特殊的功能。魔術(shù)命令在代碼單元格中運行,以“%”或“%%”開頭。“%”控制一行,“%%”控制整個單元格,常用的魔術(shù)命令如表所示。命令功能%%filePython文件的絕對路徑將腳本代碼寫入本地Python文件,不在JupyterNotebook中運行%loadPython文件的絕對路徑在JupyterNotebook中加載本地的Python文件并執(zhí)行文件代碼%pwd在JupyterNotebook中獲取當(dāng)前文件所在位置的絕對路徑%runPython文件的絕對路徑不在JupyterNotebook的單元格中加載本地Python文件,而直接運行%who列出全局變量課堂訓(xùn)練簡述在JupyterNotebook中,使用快捷鍵“Shift+Enter”和“Ctrl+Enter”運行代碼的區(qū)別。課堂小結(jié)Anaconda安裝方法TensorFlow安裝方法JupyterNotebook使用方法項目實訓(xùn)(1)熟練使用JupyterNotebook新建文檔并能夠重命名文檔。1.實訓(xùn)目的(2)熟練使用JupyterNotebook編輯和運行Python代碼。(3)學(xué)會設(shè)置JupyterNotebook文件保存位置。(4)學(xué)會使用常用的魔術(shù)命令。項目實訓(xùn)print("你好,深度學(xué)習(xí)!")2.實訓(xùn)內(nèi)容(1)編輯代碼并運行。①啟動JupyterNotebook,以Python3工作方式新建JupyterNotebook文檔,并重命名為“Hello.ipynb”。②在空白代碼單元格中輸入下列代碼,并運行。項目實訓(xùn)#使用%%file魔術(shù)命令將代碼寫入“D:/Jupyter/Example1.py”文件%%fileD:/Jupyter/Example1.pyimporttensorflowastf #引入TensorFlow包print(tf.__version__) #打印本機TensorFlow的版本號#通過%run魔術(shù)命令來實現(xiàn)在JupyterNotebook中直接執(zhí)行Python文件%runD:/Jupyter/Example1.py2.實訓(xùn)內(nèi)容(2)使用魔術(shù)命令完成下列操作。①打開資源管理器,在D盤新建文件夾,并命名為“Jupyter”。②在空白代碼單元格中輸入下列代碼,并運行。③在空白代碼單元格中輸入下列代碼,并運行。項目實訓(xùn)#通過%pwd魔術(shù)命令來獲取當(dāng)前文件所在位置的絕對路徑%pwd②在Windows命令窗口中,輸入命令“jupyternotebook--generate-config”生成配置文件。③使用記事本打開配置文件“jupyter_notebook_config.py”(配置文件的位置在上一步操作可以查看到),搜索“_dir”,定位到配置文件的鍵值“c.NotebookApp.notebook_dir=”,取消其前面的注釋符號“#”并將其值更改為希望保存的工作文件夾,修改的配置文件命令(部分)如下所示,并保存。##Thedirectorytousefornotebooksandkernels.#Default:''c.NotebookApp.notebook_dir='D:/Jupyter'這樣,以后在JupyterNotebook中創(chuàng)建的文件都會保存在這個文件夾中。2.實訓(xùn)內(nèi)容(3)配置JupyterNotebook文件的保存位置。①在空白代碼單元格中輸入下列代碼,并運行。項目實訓(xùn)按要求完成實訓(xùn)內(nèi)容,并將實訓(xùn)過程中遇到的問題和解決辦法記錄在表中。序號主要問題解決辦法123453.實訓(xùn)小結(jié)實訓(xùn)過程項目總結(jié)完成本項目的學(xué)習(xí)與實踐后,請總結(jié)應(yīng)掌握的重點內(nèi)容,并將圖中的空白處填寫完整。感謝觀看深度學(xué)習(xí)基礎(chǔ)及應(yīng)用項目二

夯實深度學(xué)習(xí)開發(fā)基礎(chǔ)項目目標掌握NumPy庫中數(shù)組的創(chuàng)建、運算和操作方法。掌握使用Matplotlib繪制常用圖表的方法。了解scikit-learn庫的基本數(shù)據(jù)集和主要功能。掌握TensorFlow中張量的定義、創(chuàng)建、運算和操作方法。能夠從scikit-learn庫或TensorFlow中的Keras庫導(dǎo)入數(shù)據(jù)集。能夠使用NumPy庫的函數(shù)查看導(dǎo)入數(shù)據(jù)集的數(shù)據(jù)屬性和元素的值。能夠根據(jù)數(shù)據(jù)集中特征值和標簽值的特點,選擇合適的可視化圖形對數(shù)據(jù)進行展示。知識目標技能目標素養(yǎng)目標鍛煉具體問題具體分析的思維方式,培養(yǎng)一絲不茍的工作態(tài)度,增強積極主動尋求解決方法的意識。了解科技前沿新應(yīng)用,開闊視野,抓住機遇,展現(xiàn)新作為。項目描述波士頓房價數(shù)據(jù)集統(tǒng)計的是20世紀70年代中期波士頓郊區(qū)的房屋數(shù)據(jù)。該數(shù)據(jù)集一共有506條數(shù)據(jù),每條數(shù)據(jù)包含13個特征值和1個標簽值。特征值包括城鎮(zhèn)人均犯罪率、住宅用地所占比例、每棟住宅的平均房間數(shù)、到達高速公路的便利指數(shù)、城鎮(zhèn)非零售業(yè)的商業(yè)用地所占比例等。標簽值是房價的平均值。項目二

夯實深度學(xué)習(xí)開發(fā)基礎(chǔ)小旌了解到深度學(xué)習(xí)的項目中都需要大量的數(shù)據(jù),這些數(shù)據(jù)來源于現(xiàn)實生活、scikit-learn庫或Keras庫等,然后對數(shù)據(jù)進行探索是訓(xùn)練模型的必修課。因此,小旌打算從波士頓房價數(shù)據(jù)集入手,開始學(xué)習(xí)這部分內(nèi)容。小旌打算導(dǎo)入波士頓房價數(shù)據(jù)集,熟悉數(shù)據(jù)集中的數(shù)據(jù),然后繪制各特征值與房價平均值的散點圖。項目分析第1步:獲取數(shù)據(jù)。從TensorFlow的Keras庫中導(dǎo)入波士頓房價數(shù)據(jù)集到本地計算機。第2步:訪問數(shù)據(jù)集數(shù)據(jù)。查看數(shù)據(jù)集中數(shù)據(jù)的數(shù)據(jù)類型、屬性及元素的值。第3步:繪制特征值與標簽值的散點圖。為了夯實深度學(xué)習(xí)開發(fā)基礎(chǔ),本項目將對Python深度學(xué)習(xí)常用庫(如NumPy庫、Matplotlib庫和scikit-learn庫)和TensorFlow基礎(chǔ)進行介紹。項目二

夯實深度學(xué)習(xí)開發(fā)基礎(chǔ)按照項目要求,將可視化波士頓房價數(shù)據(jù)集的步驟分解如下。問題1:簡述scikit-learn庫與TensorFlow的區(qū)別。項目準備全班學(xué)生以3~5人為一組進行分組,各組選出組長。組長組織組員掃碼觀看“scikit-learn庫與TensorFlow的比較”和“Keras庫自帶的數(shù)據(jù)集”視頻,討論并回答下列問題。問題2:寫出Keras庫自帶的數(shù)據(jù)集(不少于3個)。項目二

夯實深度學(xué)習(xí)開發(fā)基礎(chǔ)夯實深度學(xué)習(xí)開發(fā)基礎(chǔ)項目二章節(jié)導(dǎo)航Python深度學(xué)習(xí)常用庫2.1TensorFlow深度學(xué)習(xí)基礎(chǔ)2.2Python深度學(xué)習(xí)常用庫2.1NumPy是高性能科學(xué)計算和數(shù)據(jù)分析的基礎(chǔ)庫,它極大地簡化了多維數(shù)組的操作和處理過程。在實際應(yīng)用中,大部分數(shù)據(jù)處理常用庫都依賴于NumPy。2.1.1NumPy庫NumPy是什么呢?NumPyNumPy提供了比Python更豐富的數(shù)據(jù)類型。NumPy數(shù)據(jù)類型由類型名(如int、float)和位長組成,常用的數(shù)據(jù)類型如表所示。2.1.1NumPy庫1.數(shù)據(jù)類型類型說明類型說明bool布爾類型,值為True或Falsefloat16半精度浮點數(shù)(16位)str字符型float32單精度浮點數(shù)(32位)int8、uint8有符號和無符號的8位整數(shù)float64/float雙精度浮點數(shù)(64位)int16、uint16有符號和無符號的16位整數(shù)complex64復(fù)數(shù),用兩個32位浮點數(shù)表示實部和虛部int32/int、uint32有符號和無符號的32位整數(shù)complex128復(fù)數(shù),用兩個64位浮點數(shù)表示實部和虛部int64、uint64有符號和無符號的64位整數(shù)

NumPy定義了一個n維數(shù)組對象,簡稱ndarray對象,它是一個由一系列相同數(shù)據(jù)類型元素組成的數(shù)據(jù)集合。NumPy提供的創(chuàng)建數(shù)組的函數(shù)如表所示。NumPy庫2.創(chuàng)建數(shù)組2.1.1函數(shù)說明numpy.array(object,dtype=None)用列表、元組等創(chuàng)建數(shù)組。其中,object表示序列,如列表、元組等;dtype表示數(shù)組元素的數(shù)據(jù)類型,默認為傳入序列的數(shù)據(jù)類型numpy.zeros(shape,dtype='float')根據(jù)shape創(chuàng)建元素值都為0的數(shù)組。其中,shape表示數(shù)組形狀;dtype表示數(shù)組元素的數(shù)據(jù)類型,默認為floatnumpy.ones(shape,dtype='float')根據(jù)shape創(chuàng)建元素值都為1的數(shù)組。其中,shape表示數(shù)組形狀;dtype表示數(shù)組元素的數(shù)據(jù)類型,默認為floatnumpy.arange(start,stop,step,dtype=None)在指定數(shù)值區(qū)間創(chuàng)建數(shù)組。其中,start表示起始值,默認為0;stop表示終止值(不含);step表示步長,默認為1NumPy庫2.創(chuàng)建數(shù)組2.1.1函數(shù)說明numpy.full(shape,val)根據(jù)shape創(chuàng)建元素值都為val的數(shù)組。其中,shape表示數(shù)組形狀;val表示元素的值numpy.linspace(start,stop,num=50,endpoint=True,retstep=False,dtype=None)在指定數(shù)值區(qū)間創(chuàng)建一個等差數(shù)組。其中,num表示數(shù)值區(qū)間內(nèi)等差的元素個數(shù),默認為50;endpoint表示數(shù)組是否包含stop的值,如果為True則包含,否則不包含,默認為True;retstep表示數(shù)組中是否顯示公差,如果為True則顯示,否則不顯示,默認為Falsenumpy.logspace(start,stop,num=50,endpoint=True,base=10.0,dtype=None)在指定數(shù)值區(qū)間創(chuàng)建一個等比數(shù)組。其中,start表示起始值的指數(shù);stop表示終止值的指數(shù);base表示對數(shù)函數(shù)的底數(shù),默認為10(續(xù))NumPy數(shù)組的基本屬性如表所示。3.查看數(shù)組屬性NumPy庫2.1.1屬性說明ndim數(shù)組的維度shape數(shù)組的形狀,返回一個元組(m,n),表示m行n列size數(shù)組中元素的總個數(shù),等于shape屬性中元組元素值的乘積,即m×ndtype數(shù)組中元素的數(shù)據(jù)類型importnumpyasnp #導(dǎo)入NumPy庫#創(chuàng)建4×3的整數(shù)數(shù)組arr=np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])print('4×3的整數(shù)數(shù)組:\n',arr) #輸出數(shù)組print('數(shù)組的ndim屬性:',arr.ndim) #輸出ndim屬性print('數(shù)組的shape屬性:',arr.shape) #輸出shape屬性print('數(shù)組的size屬性:',arr.size) #輸出size屬性print('數(shù)組的dtype屬性:',arr.dtype) #輸出dtype屬性【例2-1】查看數(shù)組的基本屬性。3.查看數(shù)組屬性NumPy庫2.1.1【運行結(jié)果】程序運行結(jié)果如圖所示。【參考代碼】程序運行結(jié)果在NumPy中,如果想要訪問或修改數(shù)組中的元素,可以采用索引或切片的方式。4.數(shù)組的索引與切片NumPy庫2.1.1(1)一維數(shù)組的索引與切片。一維數(shù)組的索引與切片和列表類似,其一般格式如下。array[index] #一維數(shù)組的索引array[start:stop:step] #一維數(shù)組的切片index表示索引,從0開始stop表示終止索引(不含)索引與切片的區(qū)別:索引只能獲取單個元素切片可以獲取一定范圍的元素。start表示起始索引,默認為0step表示索引步長,默認為1,不能為04.數(shù)組的索引與切片NumPy庫2.1.1例:創(chuàng)建一維數(shù)組arr=np.array([1,2,3,4,5,6,7,8,9]),使用索引和切片獲取數(shù)組中元素的幾種情況如下。arr[2] #獲取索引為2的元素,結(jié)果為3arr[1:5] #獲取索引從1到5(不含)的所有元素,結(jié)果為[2345]arr[::3] #獲取索引從0到結(jié)束,步長為3的所有元素,結(jié)果為[147](2)二維數(shù)組的索引與切片。二維數(shù)組包含行索引和列索引。在訪問時,須使用逗號隔開,先訪問行索引再訪問列索引。二維數(shù)組的索引與切片的一般格式如下。array[row_index,column_index] #二維數(shù)組的索引#二維數(shù)組的切片array[row_start:row_stop:row_step,column_start:column_stop:column_step]5.數(shù)組的運算NumPy庫2.1.1(1)算術(shù)運算:相同形狀的數(shù)組在進行算術(shù)運算時,會將數(shù)組中對應(yīng)位置的元素值進行算術(shù)運算,如加(+)、減(?)、乘(*)、除(/)、冪(**)運算等。(2)數(shù)組廣播:NumPy中的廣播機制用于解決不同形狀數(shù)組之間的算術(shù)運算問題,它是將形狀較小的數(shù)組,在橫向或縱向上進行一定次數(shù)的重復(fù),使其形狀與形狀較大的數(shù)組相同。array2=array1.T(3)數(shù)組轉(zhuǎn)置:是指將數(shù)組的行與列轉(zhuǎn)換,即第1行變成第1列,第2行變成第2列,依次類推,如4×3的數(shù)組轉(zhuǎn)置為3×4的數(shù)組。在NumPy中,數(shù)組轉(zhuǎn)置可以使用數(shù)組的T屬性實現(xiàn),其一般格式如下。5.數(shù)組的運算NumPy庫2.1.1(4)數(shù)組變換:NumPy提供了多個函數(shù)用于改變數(shù)組的形狀,如表所示。函數(shù)說明array2=array1.reshape(shape)返回一個shape形狀的數(shù)組,且原數(shù)組不變。其中,array1表示原數(shù)組,array2表示變形后的數(shù)組,shape表示變形后的數(shù)組形狀array1.resize(shape)與reshape()功能一致,但修改原數(shù)組。其中,array1表示原數(shù)組,shape表示變形后的數(shù)組形狀array2=array1.flatten()對數(shù)組進行降維,返回折疊后的一維數(shù)組,原數(shù)組不變。其中,array1表示原數(shù)組,array2表示降維后的一維數(shù)組array2=array1.astype(dtype)轉(zhuǎn)換數(shù)組的數(shù)據(jù)類型,原數(shù)組數(shù)據(jù)類型不變。其中,array1表示原數(shù)組,array2表示變換數(shù)據(jù)類型后的數(shù)組,dtype表示目標數(shù)據(jù)類型6.隨機函數(shù)NumPy庫2.1.1numpy.random模塊對Python內(nèi)置的random模塊進行了擴展,增加了一些用于高效生成服從多種概率分布樣本值的函數(shù),如表所示。函數(shù)說

明numpy.random.rand(d0,d1,…,dn)生成[0,1)之間的隨機浮點數(shù)。其中,d0、d1、…、dn表示數(shù)組的維度numpy.random.randn(d0,d1,…,dn)生成一個具有標準正態(tài)分布的隨機浮點數(shù)。其中,d0、d1、…、dn表示數(shù)組的維度numpy.random.randint(low,high=None,size=None)生成隨機整數(shù),范圍是[low,high)。其中,low表示起始值;high表示結(jié)束值,為可選參數(shù),當(dāng)省略時生成的隨機數(shù)范圍是[0,low);size表示生成隨機數(shù)的形狀,默認為16.隨機函數(shù)NumPy庫2.1.1函數(shù)說

明numpy.random.seed(s)設(shè)置隨機數(shù)發(fā)生器種子值,使得相同條件下每次調(diào)用隨機數(shù)生成函數(shù)產(chǎn)生相同的值。其中,s表示給定的種子值numpy.random.shuffle(x)隨機打亂數(shù)組的順序。其中,x為原始數(shù)組numpy.random.uniform(low,high,size)生成指定區(qū)間均勻分布的隨機浮點數(shù)。其中,low為起始值;high為結(jié)束值;size為生成隨機數(shù)的形狀numpy.random.normal(loc,scale,size)生成符合正態(tài)分布的隨機浮點數(shù)。其中,loc為均值;scale為標準差;size表示生成隨機數(shù)的形狀numpy.random.choice(a,size=None,

replace=True,p=None)隨機從一維數(shù)組中抽取指定數(shù)量的元素。其中,a為一維數(shù)組;size為新數(shù)組的形狀;replace表示是否可以重用元素,默認為True;p為None或數(shù)組,如果為None,表示數(shù)組a中每個數(shù)選擇的概率相同,如果為數(shù)組,數(shù)組p的長度與a的長度相同,數(shù)組p中元素對應(yīng)為a中每個元素取到的概率(續(xù))6.隨機函數(shù)NumPy庫2.1.1importnumpyasnp #導(dǎo)入NumPy庫#隨機生成2行3列的整型數(shù)組并輸出arr1=np.random.randint(1,10,size=(2,3))print('隨機生成的二維整數(shù)數(shù)組arr1:\n',arr1)#隨機生成2行3列的浮點數(shù)數(shù)組并輸出arr2=np.random.rand(2,3)print('隨機生成的二維浮點數(shù)數(shù)組arr2:\n',arr2)#生成0~9的序列打亂后輸出arr3=np.arange(10)np.random.shuffle(arr3)print('打亂后的數(shù)組arr3:\n',arr3)#從數(shù)組arr3中隨機抽取2行3列的二維數(shù)組arr4=np.random.choice(arr3,(2,3))print('從數(shù)組arr3中抽取得到的arr4:\n',arr4)【例2-2】數(shù)組的隨機函數(shù)【運行結(jié)果】程序運行結(jié)果如圖所示?!緟⒖即a】程序運行結(jié)果素養(yǎng)之窗概念不同側(cè)重點不同在中國,華為是人工智能領(lǐng)域?qū)@麛?shù)最多的企業(yè)。研發(fā)了昇騰系列芯片、天籌AI求解器、昇思MindSpore開發(fā)框架、ModelArts開發(fā)平臺、盤古大模型等領(lǐng)軍產(chǎn)品,構(gòu)建了人工智能領(lǐng)域的第二平面。其中,昇思MindSpore開發(fā)框架是華為推出的開源開放的深度學(xué)習(xí)框架?;跁N思MindSpore框架,鵬城實驗室先后推出了業(yè)界首個2000億參數(shù)的中文預(yù)訓(xùn)練語言模型“鵬程?盤古”和面向生物醫(yī)學(xué)領(lǐng)域的模型“鵬程?神農(nóng)”,中國科學(xué)院自動化研究所推出了業(yè)界首個圖文音三模態(tài)模型“紫東?太初”,武漢大學(xué)研發(fā)了全球首個智能遙感框架及數(shù)據(jù)集“武漢?LuoJia”。Matplotlib是Python的一個2D繪圖庫,借助它可以繪制各種各樣的數(shù)據(jù)圖,如折線圖、直方圖和餅圖等。2.1.2Matplotlib庫

Matplotlib是什么呢?Matplotlib1.圖形的基本要素Matplotlib庫2.1.2使用Matplotlib實現(xiàn)數(shù)據(jù)可視化的圖表有很多種,每一種圖表一般都由畫布、繪圖區(qū)、圖表標題、坐標軸、坐標軸標題、圖例、網(wǎng)格線等組成,如圖所示。繪圖區(qū)圖例圖表標題畫布坐標軸及坐標軸標題網(wǎng)絡(luò)線繪圖窗口中的白色區(qū)域,作為其他組成部分的容器。顯示圖形的矩形區(qū)域,一張畫布中可以包含多個繪圖區(qū)。說明圖表的線條、顏色或標記。貫穿繪圖區(qū)的線條,衡量數(shù)據(jù)的數(shù)值標準。說明圖表的內(nèi)容。坐標軸是標識分類或數(shù)值大小的水平和垂直線,即x軸和y軸,具有標定數(shù)據(jù)值的刻度;坐標軸標題說明x軸和y軸的含義。2.常用圖表類型的繪制Matplotlib庫2.1.2在數(shù)據(jù)的可視化中,常用的圖表有折線圖、直方圖、柱狀圖、餅狀圖、散點圖和箱形圖等。Matplotlib的pyplot模塊提供了多種函數(shù)用于繪制圖表,下面介紹常用圖表的繪制方法。(1)折線圖:是一種將數(shù)據(jù)點按照順序連接起來的圖形,它直觀地反映了數(shù)據(jù)的變化趨勢,如表示氣溫、月銷量、平臺訪問量等的趨勢。繪制折線圖主要使用plot()函數(shù),其一般格式如下。plot([x],y,[fmt])[]表示可選參數(shù)x表示x軸數(shù)據(jù)y表示y軸數(shù)據(jù)fmt表示線條的樣式2.常用圖表類型的繪制Matplotlib庫2.1.2(2)直方圖:pyplot模塊提供了hist()函數(shù)用于繪制直方圖,其一般格式如下。hist(x,bins=None,range=None,color=None,edgecolor=None)x表示x軸的數(shù)據(jù),為數(shù)組或數(shù)組序列bins表示繪制矩形柱的個數(shù)或數(shù)據(jù)的分布區(qū)間,如果為整數(shù),表示繪制矩形柱的個數(shù),如果為序列,表示數(shù)據(jù)的分布區(qū)間,默認為10range表示bins的取值范圍,默認為數(shù)據(jù)的最小值和最大值color表示矩形柱的填充顏色edgecolor表示矩形柱的邊框顏色2.常用圖表類型的繪制Matplotlib庫2.1.2(3)柱狀圖:是一種用矩形柱展示不同條件下數(shù)據(jù)的變化或?qū)Ρ惹闆r的圖表,可以垂直繪制,也可以水平繪制,它的長度與其表示的數(shù)據(jù)值成正比。柱狀圖一般用x軸表示數(shù)據(jù)所屬的類別,用y軸表示數(shù)據(jù)的統(tǒng)計值。pyplot模塊提供了bar()函數(shù)用于繪制垂直柱狀圖,其一般格式如下。bar(x,height,width=0.8,color=None,edgecolor=None)x表示x軸的數(shù)據(jù)height表示垂直矩形柱的高度(即y軸數(shù)據(jù))width表示矩形柱的寬度,默認為0.8color表示矩形柱的填充顏色edgecolor表示矩形柱的邊框顏色2.常用圖表類型的繪制Matplotlib庫2.1.2pyplot模塊提供了barh()函數(shù)用于繪制水平柱狀圖,其一般格式如下。barh(y,width,height=0.8,color=None,edgecolor=None)y表示y軸的數(shù)據(jù)width表示水平矩形柱的長度(即x軸數(shù)據(jù))height表示矩形柱的寬度,默認為0.8(4)餅狀圖:常用于顯示各個部分在整體中所占的比例,它可以清楚地反映部分與部分、部分與整體之間的數(shù)量關(guān)系。pie(x,labels=None,colors=None,autopct=None)x表示扇區(qū)的數(shù)據(jù)序列l(wèi)abels表示扇區(qū)標簽的字符串序列colors表示扇區(qū)的顏色序列,默認為顏色循環(huán)autopct表示每個扇區(qū)所占比例的格式字符串,放置在扇區(qū)內(nèi)。

pyplot模塊提供了pie()函數(shù)用于繪制餅狀圖,其一般格式如下。2.常用圖表類型的繪制Matplotlib庫2.1.2(5)散點圖:可以直觀地呈現(xiàn)兩個變量的線性相關(guān)性,表示因變量變化的大致趨勢。pyplot模塊提供了scatter()函數(shù)用于繪制散點圖,其一般格式如下。scatter(x,y,s=None,c=None,marker=None)x和y表示x軸和y軸的數(shù)據(jù)s表示點的大小c表示點的顏色marker表示點的標記2.常用圖表類型的繪制Matplotlib庫2.1.2(6)箱形圖:能顯示一組數(shù)據(jù)的最大值、最小值、中位數(shù)和上下四分位數(shù),可以粗略地看出數(shù)據(jù)是否具有對稱性、分布的分散程度等,特別適用于對幾組數(shù)據(jù)的比較。pyplot模塊提供了boxplot()函數(shù)用于繪制箱形圖,其一般格式如下。boxplot(x,notch=False,vert=True,whis=None,positions=None,widths=None,patch_artist=None,showmeans=None,boxprops=None,meanprops=None)x表示繪制箱形圖的數(shù)據(jù)notch表示是否以凹口形式顯示箱形圖,取True(凹口)或False(非凹口),默認為Falsevert表示是否垂直繪制箱形圖,取True(垂直繪制)或False(水平繪制),默認為Truewhis表示指定上下限值與上下四分位數(shù)的距離,默認為1.5positions表示箱形圖的位置widths表示箱體的寬度,默認為0.5patch_artist表示是否填充箱體的顏色,取True(填充)或False(不填充),默認為Falseshowmeans表示是否顯示均值,取True(顯示)或False(不顯示),默認為Falseboxprops用于設(shè)置箱體的屬性meanprops用于設(shè)置均值的屬性3.繪圖的基本步驟Matplotlib庫2.1.2(1)導(dǎo)入繪圖庫:使用Matplotlib庫繪制圖表時,經(jīng)常使用pyplot模塊。故繪制圖形前,須導(dǎo)入pyplot模塊,其一般格式如下。importmatplotlib.pyplotasplt(2)創(chuàng)建畫布:pyplot模塊提供了figure()函數(shù)用于創(chuàng)建一張新的空白畫布,其一般格式如下。figure(num=None,figsize=None,facecolor=None)num表示畫布的編號或名稱,取整數(shù)表示編號,取字符串表示名稱,默認為編號,從1開始,如果創(chuàng)建多張畫布,則編號會依次增加figsize表示畫布的大小,為一個元組,分別表示寬度和高度,單位為英寸,默認為(6.4,4.8)facecolor表示畫布的背景顏色,默認為白色。3.繪圖的基本步驟Matplotlib庫2.1.2(3)繪制和顯示圖形:pyplot模塊提供了多種函數(shù)用于繪制圖形,如plot()函數(shù)、barh()函數(shù)、scatter()函數(shù)等。圖形繪制完成后,需要使用pyplot模塊的show()函數(shù)顯示圖形,其一般格式如下。show()nrows和ncols表示將畫布劃分為nrows行ncols列,默認均為1index表示子圖的編號,取值范圍為1~nrows×ncols,在畫布中從左向右計算,默認為1。subplot(nrows,ncols,index)(4)創(chuàng)建子圖:一張畫布中可以包含一個或多個子圖(即繪圖區(qū))。pyplot模塊提供了subplot()函數(shù)用于創(chuàng)建多個子圖,其一般格式如下。例:subplot()表示繪制一個子圖,subplot(2,3,5)表示將畫布劃分為2行3列,且子圖的編號為5,即第2行第2列的繪圖區(qū)。3.繪圖的基本步驟Matplotlib庫2.1.2label表示標題字符串。pyplot模塊還提供了xlabel()函數(shù)和ylabel()函數(shù),用于分別設(shè)置x軸和y軸的標題,其一般格式如下。title(label)(5)設(shè)置圖表和坐標軸標題:pyplot模塊提供了title()函數(shù)用于設(shè)置圖表的標題,其一般格式如下。xlabel(xlabel)ylabel(ylabel)3.繪圖的基本步驟Matplotlib庫2.1.2labels表示圖例的文本,為字符串或字符串列表loc表示圖例顯示的位置legend(labels,loc)(6)設(shè)置

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論