版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
項目6AI云容器的部署目錄01
學習TensorFlow人工智能平臺02部署TensorFlow云容器03使用TensorFlow開發(fā)“HelloWorld”程序01學習TensorFlow人工智能平臺部署TensorFlow1.TensorFlowTensorFlow是谷歌公司開發(fā)的一個開源的機器學習框架。這個框架基于Python語言開發(fā),在圖形分類、音頻處理、自然語言處理等場景下應用豐富,也是當下非常熱門的機器學習框架之一。部署TensorFlow在安裝TensorFlow之前,需確保正在使用的系統(tǒng)是TensorFlow支持的。TensorFlow支持的系統(tǒng)如下。Ubuntu16.04及以上版本。Windows7及以上版本。macOS10.12.6及以上版本。Raspbian9.0及以上版本。確認支持的系統(tǒng)之后,開始安裝TensorFlow。我們首先需要確保pip是最新版本,舊版本的pip在安裝的時候可能會遇到問題,所以我們需要先升級pip到最新版本。#pip3install--upgradepip部署TensorFlow確保pip是最新版本之后,使用如下命令安裝穩(wěn)定版的TensorFlow,其執(zhí)行結(jié)果如圖所示。#pip3installtensorflow通過下列命令測試TensorFlow是否安裝成功,如果有返回張量信息,則表明安裝成功。#python3-c"importtensorflowastf;print(tf.reduce_sum(tf.random.normal([1000,1000])))"02部署TensorFlow云容器部署TensorFlow云容器部署TensorFlow容器需要用到Docker,安裝Docker之前先升級apt包并且允許apt從倉庫下載Docker。升級apt的命令如下,其執(zhí)行結(jié)果如圖所示。#sudoapt-getupdate部署TensorFlow云容器安裝包的命令如下,其執(zhí)行結(jié)果如圖所示。#sudoapt-getinstall\apt-transport-https\ca-certificates\curl\gnupg\lsb-release部署TensorFlow云容器添加Docker官方的GPG密鑰命令如下,其執(zhí)行結(jié)果如圖所示。#curl-fsSL/linux/ubuntu/gpg|sudogpg--dearmor-o/usr/share/keyrings/docker-archive-keyring.gpg部署TensorFlow云容器建立穩(wěn)定版的倉庫,命令如下。#echo\"deb[arch=amd64signed-by=/usr/share/keyrings/docker-archive-keyring.gpg]/linux/ubuntu\$(lsb_release-cs)stable"|sudotee/etc/apt/sources.list.d/docker.list>/dev/null倉庫更改之后,需要再次更新apt。然后開始安裝Docker引擎,命令如下,其執(zhí)行結(jié)果如圖所示。#sudoapt-getupdate#sudoapt-getinstalldocker-cedocker-ce-clicontainerd.io部署TensorFlow云容器安裝好Docker引擎后,開始安裝TensorFlow。官方TensorFlowDocker映像位于tensorflow/tensorflow,即DockerHub代碼庫中。下載鏡像的命令如下,其執(zhí)行結(jié)果如圖所示。#dockerpulltensorflow/tensorflow部署TensorFlow云容器鏡像下載好之后啟動運行,測試是否安裝成功。測試結(jié)果的命令如下,其執(zhí)行結(jié)果如圖所示。#dockerrun-it--rmtensorflow/tensorflow\python-c"importtensorflowastf;print(tf.reduce_sum(tf.random.normal([1000,1000])))"03使用TensorFlow開發(fā)“HelloWorld”程序使用TensorFlow開發(fā)程序1.手寫數(shù)字識別首先,創(chuàng)建一個helloworld.py文件,用來存儲“HelloWorld”的源代碼。在TensorFlow中,“HelloWorld”并不是真正輸出“HelloWorld”,而是指在機器學習和人工智能中,相當于其他語言的“HelloWorld”地位的入門程序,是訓練手寫數(shù)字的識別。用“touch”命令創(chuàng)建一個helloworld.py文件,存儲手寫數(shù)字識別程序,命令如下。#touchhelloworld.py文件創(chuàng)建完成后,用“l(fā)s”命令查看是否成功創(chuàng)建,若創(chuàng)建失敗,則需重新創(chuàng)建一個,命令如下,結(jié)果如圖所示。#ls使用TensorFlow開發(fā)程序編輯helloworld.py文件的命令如下,其執(zhí)行結(jié)果如圖所示。#gedithelloworld.py使用TensorFlow開發(fā)程序?qū)胂螺d好的TensorFlow,代碼如下。importtensorflowastf在編寫程序之前,需要準備好MNIST數(shù)據(jù)集:下載訓練集和測試集,以及兩個數(shù)據(jù)集的標簽。如果不下載數(shù)據(jù)集,Keras在檢測不到數(shù)據(jù)集的情況下會自動下載數(shù)據(jù)集。下載MNIST數(shù)據(jù)集,如圖所示。使用TensorFlow開發(fā)程序樣本準備好之后,將樣本的整數(shù)型數(shù)據(jù)轉(zhuǎn)化成浮點型數(shù)據(jù),代碼如下。mnist=tf.keras.datasets.mnist(x_train,y_train),(x_test,y_test)=mnist.load_data()x_train,x_test=x_train/255.0,x_test/255.0之后把各層模型堆疊起來,搭建tf.keras.Sequential模型,代碼如下。model=tf.keras.models.Sequential([tf.keras.layers.Flatten(input_shape=(28,28)),tf.keras.layers.Dense(128,activation='relu'),tf.keras.layers.Dropout(0.2),tf.keras.layers.Dense(10,activation='softmax')])使用TensorFlow開發(fā)程序為模型選擇一個損失函數(shù),代碼如下。pile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])最后對模型進行訓練和測試,訓練的方法是fit(),測試的方法是evaluate()。訓練和測試、運行程序、訓練和驗證結(jié)果。訓練、測試的代碼如下。model.fit(x_train,y_train,epochs=5)model.evaluate(x_test,y_test,verbose=2)使用TensorFlow開發(fā)程序使用TensorFlow開發(fā)程序2.服裝圖像分類服裝產(chǎn)品的分類對于購物App來說是不可繞開的一環(huán),沒有產(chǎn)品分類,消費者尋找商品的時候會沒有頭緒,無法準確找到自己想要的產(chǎn)品(如鞋子、帽子等)。因此服飾產(chǎn)品的分類在銷售過程中顯得尤為重要:能夠幫助客戶更快定位想要的產(chǎn)品類型,進而推送相關(guān)產(chǎn)品給客戶,達到銷售的目的。服裝圖像分類會用到Keras。Keras是Python的深度學習API,以TensorFlow作為后端支持Keras的運行。這里不是直接使用Keras或直接導入Keras,而是通過TensorFlow導入經(jīng)過打磨后的API“keras”,其代碼如下。fromtensorflowimportkeras進行程序開發(fā)的第一步,創(chuàng)建一個Python文件,用于保存程序。用“touch”命令創(chuàng)建一個名為cloth.py的文件,并且用“l(fā)s”命令查看文件是否創(chuàng)建成功,命令如下,結(jié)果如圖所示。touchcloth.pyls使用TensorFlow開發(fā)程序文件創(chuàng)建成功之后,進入cloth.py文件,編寫程序,命令如下。geditcloth.py本程序?qū)褂肨ensorFlow以及Keras,所以需要在文件開頭導入這兩個庫。進入cloth.py文件,添加如下內(nèi)容導入TensorFlow以及Keras,以滿足之后程序開發(fā)所需要的功能需求。importtensorflowastffromtensorflowimportkeras在進行圖像分類時,還需要額外用到NumPy庫和Matplotlib庫。NumPy庫是Python的科學計算基礎(chǔ)軟件庫,是眾多Python庫中的一個。Matplotlib庫是Python的2D繪圖庫,它可以生成圖表、直方圖、功率譜、條形圖、誤差圖、散點圖等。服裝圖像分類需要用NumPy庫進行科學計算,用Matplotlib庫輸出分類結(jié)果的圖表,讓使用者能夠更加直觀地看到最終的分類結(jié)果。使用TensorFlow開發(fā)程序在使用這兩個庫之前,需要確保計算機上安裝了NumPy和Matplotlib,用以下命令安裝NumPy和matplotlib。pipinstallnumpypipinstallmatplotlib如果計算機上已經(jīng)安裝了某庫,就會提示該庫已存在。如本任務在安裝NumPy時,計算機已經(jīng)安裝過這個庫,因此在執(zhí)行命令的時候會提示NumPy庫已經(jīng)安裝。NumPy庫已存在的提醒如圖所示。使用TensorFlow開發(fā)程序安裝Matplotlib,如圖所示。若計算機未安裝該庫,將顯示安裝過程和進度,直至最后安裝成功的提示。如果Matplotlib安裝失敗,用戶可以查看錯誤信息并根據(jù)其內(nèi)容進行調(diào)整。使用TensorFlow開發(fā)程序NumPy庫和Matplotlib庫安裝完成之后,返回cloth.py程序文件,在程序文件的頭部導入這兩個庫,并將NumPy庫的使用名改為np,用“as”命令就可以更改NumPy在調(diào)用時使用的名字,Matplotlib庫中只需導入pyplot即可,同樣也更改使用名,將名字更改為plt。在cloth.py頭部添加如下內(nèi)容導入NumPy和Matplotlib。importnumpyasnpimportmatplotlib.pyplotasplt本任務用的數(shù)據(jù)集是FashionMNIST數(shù)據(jù)集,如圖所示,其中包含60000個訓練集和10000個測試集。訓練集的意思是這一部分的數(shù)據(jù)集合是用來訓練圖像分類模型的,測試集則是用于檢驗訓練完的模型。使用TensorFlow開發(fā)程序FashionMNIST數(shù)據(jù)集中,每張圖片都是28×28像素大小,每張圖片的像素值為0~255,總共被分為10類,訓練集和測試集中的每張圖片都有對應的標簽。標簽的數(shù)字對應著程序分類之后的結(jié)果,將結(jié)果和數(shù)字對應,結(jié)合Matplotlib庫輸出一個圖表,提供更加直觀的可視化結(jié)果。FashionMNIST數(shù)據(jù)集分類,如表所示。標簽名稱0T-shirt/top1Trouser2Pullover3Dress4Coat5Sandal6Shirt7Sneaker8Bag9Ankleboot使用TensorFlow開發(fā)程序找到了需要的數(shù)據(jù)集之后,接下來就是在cloth.py文件中下載數(shù)據(jù)集,并且對數(shù)據(jù)集進行分類放置。TensorFlow已經(jīng)為用戶準備好了下載數(shù)據(jù)集的方法,讀者只需要調(diào)用load_data()這個方法就可以下載和分類數(shù)據(jù)集了。下載數(shù)據(jù)集,如圖所示。下載數(shù)據(jù)集的代碼如下。fashion_mnist=keras.datasets.fashion_mnistfashion_mnist.load_data()=(train_images,train_labels),(test_images,test_labels)代碼所表達的意思是:將數(shù)據(jù)分成訓練集和測試集兩個部分,每個部分分成圖片和標簽,下載完成后,load_data()方法會返回4個NumPy數(shù)組,對應著“(train_images,train_labels),(test_images,test_labels)”。下載方法寫好后保存程序,回到終端執(zhí)行cloth.py文件,執(zhí)行下載方法。使用TensorFlow開發(fā)程序為了使輸出的結(jié)果更加直觀,這里加上了標簽的名稱,作為Matplotlib繪制圖標時的坐標名稱,代碼如下。class_names=['T-shirt/top','Trouser','Pullover','Dress','Coat','Sandal','Shirt','Sneaker','Bag','Ankleboot']之后是數(shù)據(jù)的處理部分,先查看之前下載的數(shù)據(jù)集。需要用到Matplotlib庫查看經(jīng)過處理后的圖片。plt.figure()plt.imshow(train_images[9])plt.colorbar()plt.grid(False)plt.show()plt.figure()plt.imshow(train_images[19])plt.colorbar()plt.grid(False)plt.show()使用TensorFlow開發(fā)程序使用TensorFlow開發(fā)程序查看完數(shù)據(jù)集之后,為了訓練神經(jīng)網(wǎng)絡(luò)模型,需要對這些數(shù)據(jù)集進行預處理,將每張圖片0~255的像素數(shù)值,轉(zhuǎn)化為0~1的像素數(shù)值,因此需要將每一個訓練集和測試集的圖片像素數(shù)值都除以255.0,讓每一張圖片的最終像素數(shù)值都在0~1之間,代碼如下。train_images=train_images/255.0test_images=test_images/255.0預處理完數(shù)據(jù)集中訓練集和測試集的圖片,用Matplotlib庫檢查圖像的像素數(shù)值、格式等是否正確,代碼如下。檢查圖像,如圖6-30所示。plt.figure(figsize=(10,10))foriinrange(25):plt.subplot(5,5,i+1)plt.xticks([])plt.yticks([])plt.grid(False)plt.imshow(train_images[i],cmap=plt.cm.binary)plt.xlabel(class_names[train_labels[i]])plt.show()使用TensorFlow開發(fā)程序使用TensorFlow開發(fā)程序訓練神經(jīng)網(wǎng)絡(luò)模型需要先構(gòu)建模型,配置模型的層(Layer),然后編譯和訓練模型。層是構(gòu)成神經(jīng)網(wǎng)絡(luò)的基本組成部分,層會從輸入數(shù)據(jù)(經(jīng)過運算后的一些數(shù)據(jù))中提取特征,利用這些數(shù)據(jù)解決問題。本任務利用Keras的Sequential()方法,配置了3層模型,分別是扁平層和兩個密集連接或全連接神經(jīng)層。第一層扁平層的作用是將二維數(shù)組轉(zhuǎn)化為一維數(shù)組,因為圖片是一個二維的數(shù)據(jù),因此用二維數(shù)組保存。為了訓練神經(jīng)網(wǎng)絡(luò)模型,需要將這個二維的數(shù)據(jù)轉(zhuǎn)換成一維的數(shù)據(jù)。將二維數(shù)組轉(zhuǎn)化為一維數(shù)組的操作叫作扁平化。第二層和第三層是密集連接層或全連接層,如果神經(jīng)網(wǎng)絡(luò)層數(shù)多的話,它們都可以計入隱藏層。第一個Dense層有128個神經(jīng)元,使用的激活函數(shù)是relu函數(shù);第二個Dense層會返回一個長度為10的logits數(shù)組,每個元素有一個得分,用來表示當前預測的圖像屬于10個標簽中的哪一類。代碼如下。model=keras.Sequential([keras.layers.Flatten(input_shape=(28,28)),keras.layers.Dense(128,activation='relu'),keras.layers.Dense(10)])使用TensorFlow開發(fā)程序在編譯模型這個步驟中,需要確定一些關(guān)鍵的信息,比如損失函數(shù)、優(yōu)化器、指標等,這些信息對最終模型的訓練有著很大的影響。損失函數(shù)的作用是測量模型在訓練期間的準確率,優(yōu)化器的作用是決定模型如何根據(jù)數(shù)據(jù)和損失函數(shù)進行更新,指標的作用是監(jiān)控訓練和測試步驟。代碼如下。pile(optimizer='adam',loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),metrics=['accuracy'])所有準備步驟完成之后,開始訓練模型。首先擬合數(shù)據(jù),調(diào)用model.fit()方法就可以擬合模型與訓練數(shù)據(jù)。擬合就是對模型的訓練,代碼里進行了10個輪次的擬合。擬合模型如圖所示。擬合后可以看到模型的準確率有0.9100。使用TensorFlow開發(fā)程序查看模型在測試集上的準確度代碼如下,其結(jié)果如圖所示。test_loss,test_acc=model.evaluate(test_images,test_labels,verbose=2)print('\n測試集準確度:',test_acc)模型在測試集上的準確度并沒有在訓練集上的高,測試集的準確度大概為0.8851,這里有一個比較重要的概念——過擬合。過擬合指的是機器學習模型對新的輸入、一些不屬于訓練集的輸入進行預測、分類等操作時的表現(xiàn)并沒有在訓練數(shù)據(jù)上表現(xiàn)得好。過擬合會記住訓練集上的一些噪聲和細節(jié),這些內(nèi)容會對模型在新數(shù)據(jù)上的表現(xiàn)有負面影響。使用TensorFlow開發(fā)程序模型訓練好之后,接下來就是對圖像進行實際的預測。本任務的模型中增加了一層softmax層,用于將logits的線性輸出轉(zhuǎn)化成概率,代碼如下。probability_model=tf.keras.Sequential([model,tf.keras.layers.Softmax()])predictions=probability_model.predict(test_images)添加完成之后,對測試集的數(shù)據(jù)進行預測,并且輸出預測圖像的標簽,對比預測的結(jié)果是否準確,代碼如下。預測結(jié)果如圖所示。np.argmax(predictions[10])test_labels[10]在JupyterNotebook中,可以看到分段執(zhí)行的兩部分代碼:預測結(jié)果和圖像標簽。這就是說,可以更加直觀地看出預測的結(jié)果是否跟標簽標記的相同。模型顯示第一張圖預測的結(jié)果,這張圖片的內(nèi)容屬于分類里的第十類,也就是Ankleboot(短靴)。從預測圖片的標簽中可以知道,這張圖片確實屬于短靴,因此模型的預測結(jié)果是正確的。使用TensorFlow開發(fā)程序接下來就是利用Maplotlib庫將預測的結(jié)果繪制成圖表,更加直觀地顯示預測結(jié)果。為了能夠繪制圖表,需要創(chuàng)建兩個方法,分別是plot_image()和plot_value_array()。plot_image()方法用于繪制預測的圖片以及所屬類別和預測準確率,plot_value_array()方法用于繪制預測結(jié)果的直方圖,代碼如下。defplot_image(i,predictions_array,true_label,img):predictions_array,true_label,img=predictions_array,true_label[i],img[i]plt.grid(False)plt.xticks([])plt.yticks([])plt.imshow(img,cmap=plt.cm.binary)predicted_label=np.argmax(predictions_array)ifpredicted_label==true_label:color='blue'else:color='red'plt.xlabel("{}{:2.0f}%({})".format(class_names[predicted_label],100*np.max(predictions_array),class_names[true_label]),color=color)defplot_value_array(i,predictions_array,true_label):predictions_array,true_label=predictions_array,true_label[i]plt.grid(False)plt.xticks(range(10))plt.yticks([])thisplot=plt.bar(range(10),predictions_array,color="#777777")plt.ylim([0,1])predicted_label=np.argmax(predictions_array)thisplot[predicted_label].set_color('red')thisplot[true_label].set_color('blue')使用TensorFlow開發(fā)程序?qū)懲昀L制圖表的方法后,接下來就是通過圖表的方式顯示預測結(jié)果的時刻。比如,測試集中的第22張圖的預測結(jié)果,第55張圖的預測結(jié)果。代碼如下。i=21plt.figure(figsize=(6,3))plt.subplot(1,2,1)plot_image(i,predictions[i],test_labels,test_images)plt.subplot(1,2,2)plot_value_array(i,predictions[i],test_labels)plt.show()i=54plt.figure(figsize=(6,3))plt.subplot(1,2,1)plot_image(i,predictions[i],test_labels,test_images)plt.subplot(1,2,2)plot_value_array(i,predictions[i],test_labels)plt.show()使用TensorFlow開發(fā)程序3.電影評論分類評論在日常生活中是很常見的,比如在各種相應的App中會有對餐飲店、景點、住宿、商家等的評論,評論的內(nèi)容各式各樣,有積極的評論、中肯的評論、惡意的評論等。本任務將關(guān)注對電影的評論,并將評論的內(nèi)容分為積極和消極兩類,這也是一個機器學習中重要且應用廣泛的二分類問題。本任務采用了網(wǎng)絡(luò)電影數(shù)據(jù)庫中的IMDB數(shù)據(jù)集,這個數(shù)據(jù)集包含50000條電影評論。任務中將這50000條評論按照好評和差評切割成訓練集和測試集,兩個數(shù)據(jù)集都有25000條評論數(shù)據(jù)。任務的開始需要創(chuàng)建comment.py文件,用于存儲程序。命令如下。touchcomment.py本任務將在JupyterNotebook上進行,因此運行過程中的代碼需要讀者自行保存到創(chuàng)建好的comment.py文件中。首先導入TensorFlow庫、Keras庫和NumPy庫,代碼如下。importtensorflowastffromtensorflowimportkerasimportnumpyasnp使用TensorFlow開發(fā)程序接下來用TensorFlow提供的下載數(shù)據(jù)集的方法,將IMDB數(shù)據(jù)集下載并保存到NumPy數(shù)組里,代碼如下。num_words參數(shù)保留了1萬個常見單詞,低頻的詞匯會被丟棄。下載數(shù)據(jù)集,如圖所示。imdb=keras.datasets.imdb(train_data,train_labels),(test_data,test_labels)=imdb.load_data(num_words=10000)使用TensorFlow開發(fā)程序IMDB影評數(shù)據(jù)集是經(jīng)過處理后的數(shù)據(jù)集,每個單詞都被轉(zhuǎn)化成對應的整數(shù)數(shù)字,標簽有兩個數(shù)值,分別是0和1,0代表差評,1代表好評。隨機輸出一條處理后的評論及其標簽。評論數(shù)據(jù)、評論數(shù)據(jù)的標簽。使用TensorFlow開發(fā)程序在輸出的評論數(shù)據(jù)中可以看到每個單詞都被轉(zhuǎn)化成數(shù)字,最終以數(shù)組的形式呈現(xiàn)。由于影評的長度各不相同,但神經(jīng)網(wǎng)絡(luò)的輸入必須長度一致,因此本任務使用填充數(shù)組的方式讓數(shù)組長度標準化,可以調(diào)用Keras庫中的pad_sequences()方法。把處理數(shù)據(jù)這一步作為神經(jīng)網(wǎng)絡(luò)的第一層,代碼如下。train_data=keras.preprocessing.sequence.pad_sequences(train_data,value=0,padding='post',maxlen=256)test_data=keras.preprocessing.sequence.pad_sequences(test_data,value=0,padding='post',maxlen=256)使用TensorFlow開發(fā)程序填充的值是0,填充后最大長度是256,所以每條影評最后的長度都是256。隨機輸出其中的幾條數(shù)據(jù)查看長度,輸出其中一個數(shù)組的內(nèi)容,查看填充的數(shù)據(jù)是否是0。檢查數(shù)據(jù)長度、數(shù)據(jù)填充。使用TensorFlow開發(fā)程序接下來是構(gòu)建模型的階段,如圖所示。本任務的模型總共分為4層,分別是嵌入層、池化層、全連接層和輸出層,代碼如下。vocab_size=10000model=keras.Sequential()model.add(keras.layers.Embedding(vocab_size,16))model.add(keras.layers.GlobalAveragePooling1D())model.add(keras.layers.Dense(16,activation='relu'))model.add(keras.layers.Dense(1,activation='sigmoid'))model.summary()使用TensorFlow開發(fā)程序本任務選擇的損失函數(shù)是binary_crossentropy,它能夠度量概率分布之間的“距離”,代碼如下。pile(optimizer='adam',loss='binary_crossentropy',metrics=['accuracy'])本任務將會應用驗證集,驗證集就是從訓練集中剝離一定量的數(shù)據(jù),用于檢查模型在從未見過的數(shù)據(jù)上的準確率。首先,創(chuàng)建驗證集,代碼如下。x_val=train_data[:10000]partial_x_train=train_data[10000:]y_val=train_labels[:10000]partial_y_train=train_labels[10000:]使用TensorFlow開發(fā)程序接下來開始訓練模型,訓練的過程監(jiān)控驗證集的損失值和準確率,代碼如下,結(jié)果如圖所示。history=model.fit(partial_x_train,partial_y_train,epochs=40,batch_size=512,validation_data=(x_val,y_val),verbose=1)使用TensorFlow開發(fā)程序訓練完模型之后,通過調(diào)用evaluate()方法評估模型的性能,代碼如下。圖6-43所示的模型評估的準確率為87.35%。results=model.evaluate(test_data,test_labels,verbose=2)print(results)謝謝大家項目7AI云容器的開發(fā)目錄01
訓練手寫數(shù)字識別模型02訓練商品銷量預測模型03訓練人臉識別模型01訓練手寫數(shù)字識別模型訓練手寫數(shù)字識別模型本任務需要部署JupyterNotebook容器,并且在JupyterNotebook工具中實現(xiàn)對手寫數(shù)字的識別,因此第一步需要安裝JupyterNotebook容器,命令如下,如圖所示。#dockerpulldaocloud.io/daocloud/tensorflow:1.14.0-py3-jupyter訓練手寫數(shù)字識別模型鏡像下載完成后運行JupyterNotebook,命令如下。并且復制運行之后得到的URL,在瀏覽器打開它。運行JupyterNotebook、瀏覽器中打開URL,如圖所示。#dockerrun--namemy-tensorflow-it-p8888:8888-v/tensorflow:/test/datadaocloud.io/daocloud/tensorflow:1.14.0-py3-jupyter訓練手寫數(shù)字識別模型在測試手寫數(shù)字識別效果之前,先準備數(shù)字0~9的手寫圖片,上傳到JupyterNotebook。單擊右側(cè)的“Upload”按鈕,上傳圖片,如圖所示。訓練手寫數(shù)字識別模型上傳好文件之后,單擊“New”按鈕,在下拉列表中選擇“Python3”,新建一個Python3的筆記,開始訓練手寫數(shù)字識別模型。訓練手寫數(shù)字識別模型的代碼是項目6中任務6.3所用到的代碼,在這個任務的代碼的基礎(chǔ)上去掉最后的測試部分代碼,加入保存訓練模型的代碼。新建Python3筆記、運行訓練代碼,本項目的訓練代碼如下。importtensorflowastfmnist=tf.keras.datasets.mnist(x_train,y_train),(x_test,y_test)=mnist.load_data()x_train,x_test=x_train/255.0,x_test/255.0model=tf.keras.models.Sequential([tf.keras.layers.Flatten(input_shape=(28,28)),tf.keras.layers.Dense(128,activation='relu'),tf.keras.layers.Dropout(0.2),tf.keras.layers.Dense(10,activation='softmax')])pile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])
model.fit(x_train,y_train,epochs=5)model.save('my_model.h5')model.summary()訓練手寫數(shù)字識別模型訓練手寫數(shù)字識別模型確保代碼無誤之后,需要導入自己的手寫數(shù)字圖片,因此需要用到Python的imageio庫。安裝完imageio之后重啟內(nèi)核完成更新。安裝imageio、加載手寫數(shù)字圖片。安裝imageio的命令如下。#pipinstallimageio-i/simple/加載手寫數(shù)字圖片的代碼如下。importglobimportimageioimportnumpyasnpimg_data=[]forimage_file_nameinglob.glob('*.jpg'):print('loading...',image_file_name)img_array=imageio.imread(image_file_name,as_gray=True)img_data.append((255.0-img_array.reshape(784))/255.0)s
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高中物理第九章靜電場及其應用課時4靜電的防止與利用課件新人教版必修第三冊
- 2024至2030年中國戶內(nèi)終端數(shù)據(jù)監(jiān)測研究報告
- 2013-2017年中國油水分離器行業(yè)市場專項調(diào)研及企業(yè)并購重組重點信息分析研究報告
- 2010-2012年過氧化苯甲酰(BPO)行業(yè)市場研究與競爭力分析報告
- 2024至2030年中國口腔科技工室設(shè)備數(shù)據(jù)監(jiān)測研究報告
- 2024至2030年中國單相電能表塑殼數(shù)據(jù)監(jiān)測研究報告
- 2024至2030年中國不銹鋼刀座數(shù)據(jù)監(jiān)測研究報告
- 2024年中國防靜電架空地板市場調(diào)查研究報告
- 2024年中國過濾料市場調(diào)查研究報告
- 2024年中國粘結(jié)膏市場調(diào)查研究報告
- nutric評分方法及意義
- 中醫(yī)肺結(jié)節(jié)科普知識講座
- 中國東盟物流行業(yè)分析
- 品牌策劃推廣部組織架構(gòu)方案
- TBT3453.3-2016 動車組詞匯 第3部分:部件和系統(tǒng)
- 中小學教師職稱評定英語全英答辯題
- 水穩(wěn)料開盤鑒定模板道客巴巴
- 湖南特色美食文化介紹推介PPT圖文課件
- 煤礦井下低壓電網(wǎng)短路保護裝置的整定細則
- 量子計算的生物醫(yī)學應用-用于藥物研發(fā)與疾病診斷
- Unit+8大單元整體教學設(shè)計 人教版英語九年級全冊
評論
0/150
提交評論