




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第15章Python與人工智能王雷春湖北大學(xué)內(nèi)容15.1概述15.2機器學(xué)習(xí)15.3深度學(xué)習(xí)15.1概述15.1.1人工智能簡介15.1.2Python與人工智能15.1.1人工智能簡介1.什么是人工智能1939年,27歲的數(shù)學(xué)天才阿蘭·圖靈思考“如何用一臺機器打敗另一臺機器”。1956年,一批年輕的科學(xué)家討論人工智能(ArtificialIntelligence,AI)。1997年,IBM“深藍”計算機擊敗了國際象棋冠軍卡斯帕羅夫。2016年和2017年,谷歌研發(fā)的“AlphaGo”戰(zhàn)勝了世界圍棋頂級棋手李世石九段和柯潔九段。
人工智能不再停留在口頭上和實驗室中,而是離人類越來越近,已經(jīng)進入人類的工作和生活中,與人類深度融合。
人工智能是21世紀三大尖端技術(shù)(基因工程、納米科學(xué)、人工智能)之一。15.1.1人工智能簡介人工智能的定義:人工智能是研究、開發(fā)用于模擬、延伸和擴展人類智能的理論、方法、技術(shù)及應(yīng)用系統(tǒng)的一門新科學(xué)技術(shù)。人工智能企圖了解智能的實質(zhì),并生產(chǎn)出一種新的能以與人類智能相似的方式做出反應(yīng)的智能機器。
人工智能領(lǐng)域的研究包括機器人、語言識別、圖像識別、自然語言處理和專家系統(tǒng)等。
人工智能自誕生以來,其理論和技術(shù)日益成熟,其應(yīng)用領(lǐng)域不斷擴大。
人工智能帶來的科技產(chǎn)品將是人類智慧的“容器”。
部分國家對人工智能進行了戰(zhàn)略布局見表15.1(教材P290)。15.1.1人工智能簡介(1)一些世界頂尖公司在人工智能的研究和應(yīng)用方面投入了巨大的人力、物力:
谷歌擁有2個世界頂尖工智能實驗室,即GoogleX實驗室(深度學(xué)習(xí)框架TensorFlow在這里誕生)和DeepMind實驗室(AlphaGo是其代表作品)
微軟公司在2014年成立了艾倫人工智能研究院,致力于研究人工智能Facebook發(fā)展了兩個人工智能實驗室(FAIR和AML)
百度在2013年1月、2017年3月分別成立深度學(xué)習(xí)研究院和深度學(xué)習(xí)技術(shù)及應(yīng)用國家工程實驗室
阿里巴巴人工智能實驗室于2017年7月5日首次公開亮相
騰訊在2018年3月成立了機器人實驗室。15.1.1人工智能簡介(2)國內(nèi)外知名大學(xué)成立了研究機構(gòu)或?qū)W院進行人工智能研究和教學(xué):
麻省理工學(xué)院在1959年就成立了人工智能實驗室,于2018年10月宣布啟用10億美元建設(shè)新的人工智能學(xué)院
斯坦福大學(xué)在1962年成立的人工智能實驗室致力于推動機器人教育
加州大學(xué)伯克利分校的機器人和智能機器實驗室致力于用機器人模擬動物的行為
清華大學(xué)在1987年成立了智能技術(shù)與系統(tǒng)國家重點實驗室
中國科學(xué)院大學(xué)在2017年5月宣布成立人工智能技術(shù)學(xué)院
中國科學(xué)技術(shù)大學(xué)建立了兩個人工智能方向的國家工程實驗室。15.1.1人工智能簡介(3)人工智能與科學(xué)技術(shù)及工業(yè)等相結(jié)合已經(jīng)產(chǎn)生了多方面的應(yīng)用:
人臉識別(如face++)
購物推薦(如淘寶App)
語音識別(如訊飛輸入法)
圖像識別(如微信小程序)
新聞資訊推薦(如今日頭條)
無人駕駛AlphaGo圍棋
蘋果公司個人助理Siri(能夠幫助客戶發(fā)送短信等)
亞馬遜推出的Alexa(可以幫助用戶在網(wǎng)上搜尋信息)15.1.1人工智能簡介
人工智能、機器學(xué)習(xí)(MachineLearning,ML)和深度學(xué)習(xí)(DeepLearning,DL)三者之間的關(guān)系見右圖)。
人工智能包含范圍最大,最早被提出;機器學(xué)習(xí)在20世紀80年代才逐漸被提出和研究;深度學(xué)習(xí)則在近幾年才被廣泛研究并迅速成為研究熱點。人工智能是研究用計算機模擬人的某些思維過程和智能行為(如學(xué)習(xí)、推理、思考、規(guī)劃等)的學(xué)科。
人工智能涉及計算機科學(xué)、心理學(xué)、哲學(xué)、語言學(xué)等幾乎所有自然科學(xué)和社會科學(xué),其范圍已遠遠超出了計算機科學(xué)的范疇。15.1.2Python與人工智能2.Python與人工智能人工智能的程序開發(fā)語言目前主要有Prolog、LISP、C/C++、Java和Python。Python擁有在人工智能學(xué)習(xí)和處理過程中所需要的各種庫。(1)數(shù)據(jù)獲取庫,如數(shù)據(jù)獲取庫Requests、Scrapy和數(shù)據(jù)解析庫BeautifulSoup等。(2)數(shù)據(jù)分析、處理庫,如NumPy(數(shù)組和矩陣運算等)庫、Pandas(數(shù)據(jù)分析)庫、SciPy(工程和科學(xué)計算)庫和MatPlotlib(數(shù)據(jù)可視化)庫等。(3)人工智能庫,如自然語言處理庫NLTK、機器學(xué)習(xí)庫Sklearn和深度學(xué)習(xí)庫TensorFlow、Keras、PyTorch等。
另外,Python的開源、與平臺無關(guān)、包裝能力、可組合性、可嵌入性都非常有利于人工智能的學(xué)習(xí)和研究。15.2機器學(xué)習(xí)15.2.1Sklearn15.2.2典型案例——使用線性回歸模型訓(xùn)練、測試和預(yù)測數(shù)據(jù)15.2機器學(xué)習(xí)
機器學(xué)習(xí)是一門研究機器獲取新知識和新技能,并識別現(xiàn)有知識的科學(xué)。
機器學(xué)習(xí)領(lǐng)域的主要研究對象是人工智能,特別是如何在經(jīng)驗學(xué)習(xí)中改善具體算法的性能。
通過機器學(xué)習(xí),可以發(fā)現(xiàn)喜歡的新音樂;快速找出想網(wǎng)購的鞋子;通過命令控制手機;讓恒溫器自動調(diào)節(jié)溫度;比人類更準確地識別出潦草的手寫郵箱地址;更安全地防止信用卡詐騙;從網(wǎng)頁尋找頭條新聞等。機器學(xué)習(xí)算法和軟件逐漸成為許多產(chǎn)業(yè)的核心工具。
那么,機器學(xué)習(xí)是如何進行學(xué)習(xí)的呢?普遍認為,機器學(xué)習(xí)的基礎(chǔ)是歸納(Generalize),就是從已知案例數(shù)據(jù)中找出未知的規(guī)律。
機器學(xué)習(xí)的過程與推理過程是緊密相連的,學(xué)習(xí)中所用的推理越多,系統(tǒng)的能力就越強。15.2機器學(xué)習(xí)機器學(xué)習(xí)通常按學(xué)習(xí)和模型類型分類。(1)按學(xué)習(xí)方式分類:
監(jiān)督學(xué)習(xí)(SupervisedLearning)
無監(jiān)督學(xué)習(xí)(UnsupervisedLearning)
半監(jiān)督學(xué)習(xí)(Semi-supervisedLearning)
強化學(xué)習(xí)(ReinforcementLearning)(2)按模型類型分類:回歸、基于距離方法、正則化方法、樹方法、貝葉斯方法、聚類、神經(jīng)網(wǎng)絡(luò)、深度學(xué)習(xí)、降維、集成學(xué)習(xí)、文本挖掘等。15.2機器學(xué)習(xí)
典型的機器學(xué)習(xí)算法:決策樹、隨機森林算法、邏輯回歸、支持向量機(SVM)、樸素貝葉斯、K-最近鄰算法、K-均值算法、Adaboost算法、神經(jīng)網(wǎng)絡(luò)算法和馬爾可夫算法等。
機器學(xué)習(xí)已經(jīng)有了十分廣泛的應(yīng)用,如數(shù)據(jù)挖掘、計算機視覺、自然語言處理、生物特征識別、搜索引擎、醫(yī)學(xué)診斷、檢測信用卡欺詐、證券市場分析、DNA序列測序、語音和手寫識別、戰(zhàn)略游戲和機器人運用等。15.2.1Sklearn1.簡介Sklearn是Scikit-learn的簡稱,用Python實現(xiàn),它是基于NumPy、SciPy、Matplotlib等的機器學(xué)習(xí)算法庫。Sklearn的內(nèi)容豐富,功能強大,包含大量用于機器學(xué)習(xí)的算法、模塊和數(shù)據(jù)集。(1)實現(xiàn)數(shù)據(jù)預(yù)處理、分類、回歸、降維、模型選擇等常用的機器學(xué)習(xí)算法。(2)特征提取(ExtractingFeatures)、數(shù)據(jù)處理(ProcessingData)和模型評估(EvaluatingModels)等模塊。(3)內(nèi)置了大量用于訓(xùn)練、測試和評估模型的數(shù)據(jù)集。15.2.1SklearnSklearn可以不受任何限制,遵從自由的BSD(伯克利軟件發(fā)行版,一種開源協(xié)議)授權(quán)。
許多Sklearn算法都可以快速執(zhí)行且可擴展,海量數(shù)據(jù)集除外。Sklearn的穩(wěn)定性很好,大部分代碼都可以通過Python的自動化測試。Sklearn可從站點/project/scikit-learn/#files下載。
本書案例對應(yīng)下載安裝文件scikit_learn-0.20.3-cp37-cp37m-win_amd64.whl。Sklearn下載和安裝方法參見1.2.5節(jié)。15.2.1Sklearn2.使用Sklearn進行機器學(xué)習(xí)的主要步驟1)獲取數(shù)據(jù)
獲取數(shù)據(jù)通常三種方法:使用Sklearn現(xiàn)有數(shù)據(jù)集、創(chuàng)建新的數(shù)據(jù)集和獲取真實數(shù)據(jù)集。(1)使用Sklearn現(xiàn)有數(shù)據(jù)集。比較有代表性的數(shù)據(jù)集如下。①鳶尾花數(shù)據(jù)集:通過方法load_iris()調(diào)用,常用于分類算法。②波士頓房價數(shù)據(jù)集:通過方法load_boston()調(diào)用,常用于回歸算法。③手寫數(shù)字數(shù)據(jù)集:通過方法load_digits()調(diào)用,常用于回歸算法。④糖尿病數(shù)據(jù)集:通過方法load_diabetes()調(diào)用,常用于回歸算法。15.2.1Sklearn(2)創(chuàng)建新的數(shù)據(jù)集。Sklearn中的樣本生成器(samples_generator)包含大量創(chuàng)建樣本數(shù)據(jù)的方法,其中比較常見的方法如下。①make_blobs():產(chǎn)生多類單標(biāo)簽數(shù)據(jù)集。②make_classification():產(chǎn)生多類單標(biāo)簽數(shù)據(jù)集。③make_regression():產(chǎn)生回歸任務(wù)的數(shù)據(jù)集。④make_multilabel_classification():產(chǎn)生多類多標(biāo)簽隨機樣本集。⑤make_gaussian_quantiles():產(chǎn)生分組多維正態(tài)分布的數(shù)據(jù)集。(3)獲取真實數(shù)據(jù)集。一些國內(nèi)外機構(gòu)提供了免費的真實數(shù)據(jù)集,這些真實數(shù)據(jù)集可以直接用于模型的學(xué)習(xí)、測試和評估等。15.2.1Sklearn2)數(shù)據(jù)預(yù)處理
數(shù)據(jù)預(yù)處理階段是機器學(xué)習(xí)中不可缺少的一環(huán),它可以使數(shù)據(jù)更加有效地被模型或者評估器識別。(1)數(shù)據(jù)歸一化。(2)正則化。(3)one-hot編碼。3)數(shù)據(jù)集拆分
在訓(xùn)練數(shù)據(jù)集時,通常會把訓(xùn)練數(shù)據(jù)集進一步拆分成訓(xùn)練集和測試集。
訓(xùn)練集用于建立模型,測試集用于對模型進行驗證。15.2.1Sklearn4)定義模型Sklearn為所有模型提供了非常相似的接口,這樣可以更加快速地熟悉所有模型的用法。Sklearn中常用的模型見表15.2(教材P294)。5)模型評估評估模型的基本思路如下。(1)準備測試樣本。測試樣本的特征應(yīng)與訓(xùn)練樣本的特征一致。(2)使用模型對測試樣本進行計算。將計算結(jié)果與樣本中的真實值進行比較,評估其準確率。15.2.1Sklearn6)保存模型
訓(xùn)練好模型后,可以將訓(xùn)練好的模型保存到本地或者放到網(wǎng)上。
模型可以保存為Pickle文件,或使用Sklearn自帶方法joblib()對模型進行保存。7)應(yīng)用模型模型保存后,可以在實際中進行使用,如對數(shù)據(jù)分類或預(yù)測等。15.2.2典型案例【例15.1】使用Sklearn中的線性回歸模型訓(xùn)練、測試和預(yù)測數(shù)據(jù)。分析:本案例實現(xiàn)方法如下。(1)通過Sklearn中的datasets.make_regression()方法生成指定數(shù)量的回歸數(shù)據(jù)集。(2)將生成的數(shù)據(jù)集拆分為訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)。(3)使用訓(xùn)練數(shù)據(jù)訓(xùn)練、保存模型。(4)使用測試數(shù)據(jù)評估模型。(5)將生成的模型保存在指定位置。(6)從指定位置讀出模型并預(yù)測數(shù)據(jù)。15.2.2典型案例程序代碼:importmatplotlib.pyplotaspltfromsklearn.linear_modelimportLinearRegressionfromsklearn.externalsimportjoblibfromsklearnimportdatasetsfromsklearn.model_selectionimporttrain_test_split15.2.2典型案例x,y=datasets.make_regression(n_samples=200,n_features=1,n_targets=1,noise=6)#生成數(shù)據(jù)點以散點圖顯示.print("1.生成數(shù)據(jù)的散點圖(圖15.2左),訓(xùn)練數(shù)據(jù)和預(yù)測數(shù)據(jù)擬合線(圖15.2右).")plt.scatter(x,y)plt.xticks(fontsize=16)plt.yticks(fontsize=16)plt.xlabel('x軸-x',fontproperties='SimHei',fontsize=18)plt.ylabel('y軸-y',fontproperties='SimHei',fontsize=18)plt.show()15.2.2典型案例#2.拆分數(shù)據(jù)集,70%數(shù)據(jù)用于訓(xùn)練,30%數(shù)據(jù)用于測試.train_x,test_x,train_y,test_y=train_test_split(x,y,test_size=0.3,random_state=0)#3.訓(xùn)練模型.LinearModel=LinearRegression()LinearModel.fit(train_x,train_y)fitted_y=LinearModel.predict(train_x)#圖形顯示訓(xùn)練數(shù)據(jù)和預(yù)測數(shù)據(jù).plt.plot(train_x,train_y,'bo')plt.plot(train_x,fitted_y,'r',linewidth=4.0)plt.xlabel('x軸-train_x',fontproperties='SimHei',fontsize=18)plt.ylabel('y軸-train_y/fitted_y',fontproperties='SimHei',fontsize=18)plt.legend(['train_y','fitted_y'],fontsize=16)plt.xticks(fontsize=16)plt.yticks(fontsize=16)plt.show()15.2.2典型案例print("2.模型評估值:%.6f."%LinearModel.score(test_x,test_y))#5.保存模型.joblib.dump(LinearModel,'TrainModel.m')#6.使用模型.LinearModelUse=joblib.load('TrainModel.m')testx=[[1.6]]print("3.%f的預(yù)測結(jié)果為:%f."%(testx[0][0],LinearModelUse.predict([[1.6]])))15.2.2典型案例運行結(jié)果:1.生成數(shù)據(jù)的散點圖(圖15.2左),訓(xùn)練數(shù)據(jù)和預(yù)測數(shù)據(jù)擬合線(圖15.2右).2.模型評估值:0.991244.3.1.600000的預(yù)測結(jié)果為:112.579482.15.2.2典型案例15.3深度學(xué)習(xí)15.3.1TensorFlow15.3.2典型案例——識別模糊的手寫數(shù)字圖片15.3.1TensorFlow深度學(xué)習(xí)的概念源于人工神經(jīng)網(wǎng)絡(luò)的研究,由Hinton等人于2006年提出,通過組合低層特征形成更加抽象的高層表示屬性類別或特征,以發(fā)現(xiàn)數(shù)據(jù)的分布式特征表示。
深度學(xué)習(xí)是機器學(xué)習(xí)研究中一個新的領(lǐng)域,其動機在于建立、模擬人腦進行分析學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò),模仿人腦的機制來解釋數(shù)據(jù),如圖像、聲音和文本等。
同機器學(xué)習(xí)方法一樣,深度機器學(xué)習(xí)方法也有監(jiān)督學(xué)習(xí)與無監(jiān)督學(xué)習(xí)之分。
不同的學(xué)習(xí)框架下建立的學(xué)習(xí)模型有很大不同。
例如,卷積神經(jīng)網(wǎng)絡(luò)(ConvolutionalNeuralNetwork,CNN)是一種深度監(jiān)督學(xué)習(xí)下的深度學(xué)習(xí)模型,而深度置信網(wǎng)(DeepBeliefNet,DBN)是一種無監(jiān)督學(xué)習(xí)下的深度學(xué)習(xí)模型。15.3.1TensorFlow
在開始深度學(xué)習(xí)項目之前,選擇一個合適的框架是非常重要的,一個合適的框架能起到事半功倍的作用。
當(dāng)前最為流行的深度學(xué)習(xí)框架有TensorFlow、Keras、PyTorch、Caffe等,這些框架都已經(jīng)開源,主要使用Python,也可以兼容R或其他語言。
深度學(xué)習(xí)框架在2018年度的綜合得分排名見圖15.3。
從圖15.3中可以看出,TensorFlow排名第一。
在GitHub活躍度、谷歌搜索、Medium文章數(shù)、亞馬遜書籍和arXiv論文這些數(shù)據(jù)源上,TensorFlow所占的比重都是最大的。TensorFlow還擁有最多的開發(fā)者用戶,以及出現(xiàn)在最多的在線職位描述中。圖15.3深度學(xué)習(xí)框架在2018年度的綜合得分排名15.3.1TensorFlow1.簡介TensorFlow是Google開源的第二代用于數(shù)字計算的軟件庫。TensorFlow可以理解為一個深度學(xué)習(xí)框架,有完整的數(shù)據(jù)流向和處理機制,封裝了大量高效可用的算法及神經(jīng)網(wǎng)絡(luò)搭建方面的函數(shù),可以在此基礎(chǔ)上進行深度學(xué)習(xí)的開發(fā)與研究。TensorFlow的靈活架構(gòu)可以在多種平臺上展開計算,如臺式計算機中的一個或多個CPU/GPU、服務(wù)器、移動設(shè)備等。
在GoogleBrain團隊支持下,TensorFlow已經(jīng)是全世界使用人數(shù)最多、社區(qū)最為龐大的一個深度學(xué)習(xí)框架,它具有Python和C++的接口,其教程非常完善,目前是深度學(xué)習(xí)框架的首選,且支持Keras。15.3.1TensorFlowTensorFlow是當(dāng)今深度學(xué)習(xí)領(lǐng)域中最火的框架之一,具有如下特點。(1)高度的靈活性(2)良好的可移植性(3)多語言支持(4)豐富的算法庫(5)完善的文檔15.3.1TensorFlow2.開發(fā)環(huán)境搭建TensorFlow可從站點/project/tensorflow/#files下載。
本書案例對應(yīng)安裝文件:tensorflow-1.13.1-cp37-cp37m-win_amd64.whl。TensorFlow的下載和安裝方法參見1.2.5節(jié)。3.工作原理TensorFlow中的計算可以表示為一個有向圖(DirectedGraph)或稱計算圖(ComputationGraph)。
在TensorFlow中,將每個運算操作作為一個節(jié)點(Node),節(jié)點與節(jié)點之間的連接成為邊(Edge),在計算圖的邊中流動(Flow)的數(shù)據(jù)稱為張量(Tensor)。
計算圖中的每個節(jié)點可以有任意多個輸入和任意多個輸出,每個節(jié)點描述了一種運算操作(Operation),節(jié)點可以看作運算操作的實例化(Instance)。
用戶可以使用Python、C++、Java等語言設(shè)計計算圖。
TensorFlow計算圖必須在會話(Session)里被啟動。15.3.1TensorFlow4.基本使用【例15.2】兩個矩陣乘法運算。程序代碼:importtensorflowastf #導(dǎo)入TensorFlow.a=tf.constant([[1,2]]) #定義一個1行2列的矩陣a.b=tf.constant([[2],[4]]) #定義一個2行1列的矩陣b.c=tf.matmul(a,b) #矩陣乘法運算.sess=tf.Session() #創(chuàng)建會話.result=sess.run(c) #啟動會話.print("result=",result) #輸出結(jié)果.sess.close() #關(guān)閉會話.運行結(jié)果:result=[[10]]15.3.1TensorFlow【例15.3】兩個變量加法運算。程序代碼:importtensorflowastf#定義變量.a=tf.Variable(3)b=tf.Variable(4)c=tf.add(a,b)#變量初始化.init_op=tf.global_variables_initializer()#創(chuàng)建交互式會話.sess=tf.InteractiveSession()sess.run(init_op)15.3.1TensorFlow#運行并輸出變量.print('c=',sess.run(c))print('c=',sess.run(c)) #輸出結(jié)果.sess.close()
#關(guān)閉會話.運行結(jié)果:c=715.3.1TensorFlow【例15.4】占位符使用示例。程序代碼:importtensorflowastf#占位符.a=tf.placeholder(32)b=tf.placeholder(32)#構(gòu)建計算圖.c=a*10+b#創(chuàng)建會話.sess=tf.InteractiveSession()#方式一:通過eval()方法給a、b傳值.print("c=",c.eval({a:1,b:2})) #0維張量.print("c=",c.eval({a:[1],b:[2]})) #1維張量.print("c=",c.eval({a:[[1,2],[3,4]],b:[[1,2],[3,4]]})) #2維張量.15.3.1TensorFlow#方式二:通過feed_dict()給a,b傳值.print("c=",sess.run(c,feed_dict={a:1,b:2}))#0維張量.print("c=",sess.run(c,feed_dict={a:[1],b:[2]})) #1維張量.print("c=",sess.run(c,feed_dict={a:[[1,2],[3,4]],b:[[1,2],[3,4]]}))#2維張量.sess.close()#關(guān)閉會話.運行結(jié)果:c=12c=[12]c=[[1122][3344]]c=12c=[12]c=[[1122][3344]]15.3.2典型案例——識別模糊的手寫數(shù)字圖片MNIST是在機器學(xué)習(xí)領(lǐng)域中的一個經(jīng)典問題,是把28像素×28像素的手寫數(shù)字圖像識別為相應(yīng)的數(shù)字,數(shù)字的范圍從0到9(見圖15.4)。MNIST數(shù)據(jù)集可從站點/exdb/mnist/下載,也可以使用TensorFlow庫中的模塊自動下載和安裝。MNIST數(shù)據(jù)集和解壓、重構(gòu)后的數(shù)據(jù)集見表15.3和表15.4(教材P300)15.3.2典型案例——識別模糊的手寫數(shù)字圖片【例15.5】使用TensorFlow對MNIST數(shù)據(jù)集中的手寫數(shù)字圖像進行訓(xùn)練、測試并識別。分析:本案例實現(xiàn)步驟如下。(1)導(dǎo)入MNIST數(shù)據(jù)集。(2)構(gòu)建模型。(3)訓(xùn)練模型。(4)測試模型。(5)保存模型。(6)讀取模型。(7)驗證模型。15.3.2典型案例——識別模糊的手寫數(shù)字圖片程序代碼:importtensorflowastfimportmatplotlib.pyplotaspltimporttime#1.下載并安裝MNIST數(shù)據(jù)集.importtensorflow.examples.tutorials.mnist.input_dataasinputdatamnist=inputdata.read_data_sets("MNIST_data/",one_hot=True)15.3.2典型案例——識別模糊的手寫數(shù)字圖片#2.構(gòu)建模型x=tf.placeholder(tf.float32,[None,784]) #圖像數(shù)據(jù).y_real=tf.placeholder("float",[None,10]) #標(biāo)簽真實值.#學(xué)習(xí)參數(shù):參數(shù)矩陣W,偏置b.W=tf.Variable(tf.zeros([784,10]))b=tf.Variable(tf.zeros([10]))y_predict=tf.nn.softmax(tf.matmul(x,W)+b) #標(biāo)簽預(yù)測值.#反向傳播結(jié)構(gòu).train_cost=-tf.reduce_sum(y_real*tf.log(y_predict)) #損失函數(shù).#優(yōu)化器.optimizer=tf.train.GradientDescentOptimizer(0.01).minimize(train_cost)#設(shè)置模型保存路徑.saver=tf.train.Saver()model_path="model/mnist_model.ckpt"train_epochs=2000 batch_size=100 15.3.2典型案例——識別模糊的手寫數(shù)字圖片#創(chuàng)建字典,保存訓(xùn)練過程中參數(shù)信息.train_info={"epoch":[],"train_cost":[],"train_accuracy":[]}#啟動會話.withtf.Session()assess:sess.run(tf.global_variables_initializer()) #初始化所有變量.#3.訓(xùn)練模型.start_time=time.time()print("1.訓(xùn)練模型")forepochinrange(1,train_epochs+1):batch_xs,batch_ys=mnist.train.next_batch(batch_size) #訓(xùn)練數(shù)據(jù).opt,cost=sess.run([optimizer,train_cost],feed_dict={x:batch_xs,y_real:batch_ys})#計算識別準確率.train_cor_pred=tf.equal(tf.argmax(y_predict,1),tf.argmax(y_real,1))train_accuracy=tf.reduce_mean(tf.cast(train_cor_pred,tf.float32))train_acc=train_accuracy.eval({x:batch_xs,y_real:batch_ys})15.3.2典型案例——識別模糊的手寫數(shù)字圖片
#保存訓(xùn)練信息.train_info["epoch"].append(epoch)
train_info["train_cost"].append(cost)train_info["train_accuracy"].append(train_acc)end_time=time.time()print("模型訓(xùn)練時間:%.8f秒."%(end_time-start_time)) #模型訓(xùn)練時間.#圖形顯示訓(xùn)練過程中損失和識別準確率變化情況.print("訓(xùn)練過程中損失(圖15.5左)和識別準確率變化情況(圖15.5右):")plt.figure()plt.plot(train_info["epoch"],train_info["train_cost"],"r")plt.xlabel('x軸-輪數(shù)',fontproperties='SimHei',fontsize=18)plt.ylabel('y軸-損失',fontproperties='SimHei',fontsize=18)15.3.2典型案例——識別模糊的手寫數(shù)字圖片
plt.xticks(fontsize=16)plt.yticks(fontsize=16)plt.legend(['train_cost','line'],fontsize=16)plt.figure()plt.plot(train_info["epoch"],train_info["train_accuracy"],"b")plt.xlabel('x軸-輪數(shù)',fontproperties='SimHei',fontsize=18)plt.ylabel('y軸-識別準確率',fontproperties='SimHei',fontsize=18)plt.xticks(fontsize=16)plt.yticks(fontsize=16)plt.legend(['train_accuracy','line'],fontsize=16)plt.show()15.3.2典型案例——識別模糊的手寫數(shù)字圖片#4.測試模型.print("2.測試模型")test_cor_pred=tf.equal(tf.argmax(y_predict,1),tf.argmax(y_real,1))#計算識別準確率.test_accuracy=tf.reduce_mean(tf.cast(test_c
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 重癥醫(yī)學(xué)輪轉(zhuǎn)護士培訓(xùn)
- 腰椎間盤突出預(yù)防鍛煉
- 胸椎骨折病人的護理查房
- 2024內(nèi)蒙古通遼市中考真題生物+答案
- 2025年專用刀具及類似器具項目發(fā)展計劃
- 腎挫傷休克護理查房
- 非瓦楞紙及紙板容器企業(yè)ESG實踐與創(chuàng)新戰(zhàn)略研究報告
- 歡樂碰碰車行業(yè)跨境出海戰(zhàn)略研究報告
- 殘障人三輪車批發(fā)企業(yè)ESG實踐與創(chuàng)新戰(zhàn)略研究報告
- 山西省2025屆高三下學(xué)期考前適應(yīng)性測試啟航(一模)數(shù)學(xué)試題
- 中華人民共和國學(xué)前教育法
- 辯論英文課件教學(xué)課件
- 2023屆江蘇省南通市高考一模地理試題(解析版)
- 2021年廣東省公務(wù)員錄用考試《行測》題(鄉(xiāng)鎮(zhèn)卷)【原卷版】
- 2020年全國中學(xué)生生物學(xué)競賽聯(lián)賽試題真題(含答案解析)
- 足浴技師與店內(nèi)禁止黃賭毒協(xié)議書范文
- 鐵路專業(yè)基礎(chǔ)知識考試題及答案
- 制定業(yè)務(wù)拓展的具體方案計劃
- 租電合作合同協(xié)議書范本
- 一例下肢靜脈血栓疑難病例護理討論
- 鼎和財險個人人身意外傷害保險(互聯(lián)網(wǎng)專屬)條款
評論
0/150
提交評論