人工智能云平臺(tái)部署與開發(fā)(微課版) 課件 項(xiàng)目6、7 AI云容器的部署、AI云容器的開發(fā)_第1頁(yè)
人工智能云平臺(tái)部署與開發(fā)(微課版) 課件 項(xiàng)目6、7 AI云容器的部署、AI云容器的開發(fā)_第2頁(yè)
人工智能云平臺(tái)部署與開發(fā)(微課版) 課件 項(xiàng)目6、7 AI云容器的部署、AI云容器的開發(fā)_第3頁(yè)
人工智能云平臺(tái)部署與開發(fā)(微課版) 課件 項(xiàng)目6、7 AI云容器的部署、AI云容器的開發(fā)_第4頁(yè)
人工智能云平臺(tái)部署與開發(fā)(微課版) 課件 項(xiàng)目6、7 AI云容器的部署、AI云容器的開發(fā)_第5頁(yè)
已閱讀5頁(yè),還剩66頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

項(xiàng)目6AI云容器的部署目錄01

學(xué)習(xí)TensorFlow人工智能平臺(tái)02部署TensorFlow云容器03使用TensorFlow開發(fā)“HelloWorld”程序01學(xué)習(xí)TensorFlow人工智能平臺(tái)部署TensorFlow1.TensorFlowTensorFlow是谷歌公司開發(fā)的一個(gè)開源的機(jī)器學(xué)習(xí)框架。這個(gè)框架基于Python語(yǔ)言開發(fā),在圖形分類、音頻處理、自然語(yǔ)言處理等場(chǎng)景下應(yīng)用豐富,也是當(dāng)下非常熱門的機(jī)器學(xué)習(xí)框架之一。部署TensorFlow在安裝TensorFlow之前,需確保正在使用的系統(tǒng)是TensorFlow支持的。TensorFlow支持的系統(tǒng)如下。Ubuntu16.04及以上版本。Windows7及以上版本。macOS10.12.6及以上版本。Raspbian9.0及以上版本。確認(rèn)支持的系統(tǒng)之后,開始安裝TensorFlow。我們首先需要確保pip是最新版本,舊版本的pip在安裝的時(shí)候可能會(huì)遇到問(wèn)題,所以我們需要先升級(jí)pip到最新版本。#pip3install--upgradepip部署TensorFlow確保pip是最新版本之后,使用如下命令安裝穩(wěn)定版的TensorFlow,其執(zhí)行結(jié)果如圖所示。#pip3installtensorflow通過(guò)下列命令測(cè)試TensorFlow是否安裝成功,如果有返回張量信息,則表明安裝成功。#python3-c"importtensorflowastf;print(tf.reduce_sum(tf.random.normal([1000,1000])))"02部署TensorFlow云容器部署TensorFlow云容器部署TensorFlow容器需要用到Docker,安裝Docker之前先升級(jí)apt包并且允許apt從倉(cāng)庫(kù)下載Docker。升級(jí)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)定版的倉(cāng)庫(kù),命令如下。#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倉(cāng)庫(kù)更改之后,需要再次更新apt。然后開始安裝Docker引擎,命令如下,其執(zhí)行結(jié)果如圖所示。#sudoapt-getupdate#sudoapt-getinstalldocker-cedocker-ce-clicontainerd.io部署TensorFlow云容器安裝好Docker引擎后,開始安裝TensorFlow。官方TensorFlowDocker映像位于tensorflow/tensorflow,即DockerHub代碼庫(kù)中。下載鏡像的命令如下,其執(zhí)行結(jié)果如圖所示。#dockerpulltensorflow/tensorflow部署TensorFlow云容器鏡像下載好之后啟動(dòng)運(yùn)行,測(cè)試是否安裝成功。測(cè)試結(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ù)字識(shí)別首先,創(chuàng)建一個(gè)helloworld.py文件,用來(lái)存儲(chǔ)“HelloWorld”的源代碼。在TensorFlow中,“HelloWorld”并不是真正輸出“HelloWorld”,而是指在機(jī)器學(xué)習(xí)和人工智能中,相當(dāng)于其他語(yǔ)言的“HelloWorld”地位的入門程序,是訓(xùn)練手寫數(shù)字的識(shí)別。用“touch”命令創(chuàng)建一個(gè)helloworld.py文件,存儲(chǔ)手寫數(shù)字識(shí)別程序,命令如下。#touchhelloworld.py文件創(chuàng)建完成后,用“l(fā)s”命令查看是否成功創(chuàng)建,若創(chuàng)建失敗,則需重新創(chuàng)建一個(gè),命令如下,結(jié)果如圖所示。#ls使用TensorFlow開發(fā)程序編輯helloworld.py文件的命令如下,其執(zhí)行結(jié)果如圖所示。#gedithelloworld.py使用TensorFlow開發(fā)程序?qū)胂螺d好的TensorFlow,代碼如下。importtensorflowastf在編寫程序之前,需要準(zhǔn)備好MNIST數(shù)據(jù)集:下載訓(xùn)練集和測(cè)試集,以及兩個(gè)數(shù)據(jù)集的標(biāo)簽。如果不下載數(shù)據(jù)集,Keras在檢測(cè)不到數(shù)據(jù)集的情況下會(huì)自動(dòng)下載數(shù)據(jù)集。下載MNIST數(shù)據(jù)集,如圖所示。使用TensorFlow開發(fā)程序樣本準(zhǔn)備好之后,將樣本的整數(shù)型數(shù)據(jù)轉(zhuǎn)化成浮點(diǎ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之后把各層模型堆疊起來(lái),搭建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ā)程序?yàn)槟P瓦x擇一個(gè)損失函數(shù),代碼如下。pile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])最后對(duì)模型進(jìn)行訓(xùn)練和測(cè)試,訓(xùn)練的方法是fit(),測(cè)試的方法是evaluate()。訓(xùn)練和測(cè)試、運(yùn)行程序、訓(xùn)練和驗(yàn)證結(jié)果。訓(xùn)練、測(cè)試的代碼如下。model.fit(x_train,y_train,epochs=5)model.evaluate(x_test,y_test,verbose=2)使用TensorFlow開發(fā)程序使用TensorFlow開發(fā)程序2.服裝圖像分類服裝產(chǎn)品的分類對(duì)于購(gòu)物App來(lái)說(shuō)是不可繞開的一環(huán),沒有產(chǎn)品分類,消費(fèi)者尋找商品的時(shí)候會(huì)沒有頭緒,無(wú)法準(zhǔn)確找到自己想要的產(chǎn)品(如鞋子、帽子等)。因此服飾產(chǎn)品的分類在銷售過(guò)程中顯得尤為重要:能夠幫助客戶更快定位想要的產(chǎn)品類型,進(jìn)而推送相關(guān)產(chǎn)品給客戶,達(dá)到銷售的目的。服裝圖像分類會(huì)用到Keras。Keras是Python的深度學(xué)習(xí)API,以TensorFlow作為后端支持Keras的運(yùn)行。這里不是直接使用Keras或直接導(dǎo)入Keras,而是通過(guò)TensorFlow導(dǎo)入經(jīng)過(guò)打磨后的API“keras”,其代碼如下。fromtensorflowimportkeras進(jìn)行程序開發(fā)的第一步,創(chuàng)建一個(gè)Python文件,用于保存程序。用“touch”命令創(chuàng)建一個(gè)名為cloth.py的文件,并且用“l(fā)s”命令查看文件是否創(chuàng)建成功,命令如下,結(jié)果如圖所示。touchcloth.pyls使用TensorFlow開發(fā)程序文件創(chuàng)建成功之后,進(jìn)入cloth.py文件,編寫程序,命令如下。geditcloth.py本程序?qū)?huì)使用TensorFlow以及Keras,所以需要在文件開頭導(dǎo)入這兩個(gè)庫(kù)。進(jìn)入cloth.py文件,添加如下內(nèi)容導(dǎo)入TensorFlow以及Keras,以滿足之后程序開發(fā)所需要的功能需求。importtensorflowastffromtensorflowimportkeras在進(jìn)行圖像分類時(shí),還需要額外用到NumPy庫(kù)和Matplotlib庫(kù)。NumPy庫(kù)是Python的科學(xué)計(jì)算基礎(chǔ)軟件庫(kù),是眾多Python庫(kù)中的一個(gè)。Matplotlib庫(kù)是Python的2D繪圖庫(kù),它可以生成圖表、直方圖、功率譜、條形圖、誤差圖、散點(diǎn)圖等。服裝圖像分類需要用NumPy庫(kù)進(jìn)行科學(xué)計(jì)算,用Matplotlib庫(kù)輸出分類結(jié)果的圖表,讓使用者能夠更加直觀地看到最終的分類結(jié)果。使用TensorFlow開發(fā)程序在使用這兩個(gè)庫(kù)之前,需要確保計(jì)算機(jī)上安裝了NumPy和Matplotlib,用以下命令安裝NumPy和matplotlib。pipinstallnumpypipinstallmatplotlib如果計(jì)算機(jī)上已經(jīng)安裝了某庫(kù),就會(huì)提示該庫(kù)已存在。如本任務(wù)在安裝NumPy時(shí),計(jì)算機(jī)已經(jīng)安裝過(guò)這個(gè)庫(kù),因此在執(zhí)行命令的時(shí)候會(huì)提示NumPy庫(kù)已經(jīng)安裝。NumPy庫(kù)已存在的提醒如圖所示。使用TensorFlow開發(fā)程序安裝Matplotlib,如圖所示。若計(jì)算機(jī)未安裝該庫(kù),將顯示安裝過(guò)程和進(jìn)度,直至最后安裝成功的提示。如果Matplotlib安裝失敗,用戶可以查看錯(cuò)誤信息并根據(jù)其內(nèi)容進(jìn)行調(diào)整。使用TensorFlow開發(fā)程序NumPy庫(kù)和Matplotlib庫(kù)安裝完成之后,返回cloth.py程序文件,在程序文件的頭部導(dǎo)入這兩個(gè)庫(kù),并將NumPy庫(kù)的使用名改為np,用“as”命令就可以更改NumPy在調(diào)用時(shí)使用的名字,Matplotlib庫(kù)中只需導(dǎo)入pyplot即可,同樣也更改使用名,將名字更改為plt。在cloth.py頭部添加如下內(nèi)容導(dǎo)入NumPy和Matplotlib。importnumpyasnpimportmatplotlib.pyplotasplt本任務(wù)用的數(shù)據(jù)集是FashionMNIST數(shù)據(jù)集,如圖所示,其中包含60000個(gè)訓(xùn)練集和10000個(gè)測(cè)試集。訓(xùn)練集的意思是這一部分的數(shù)據(jù)集合是用來(lái)訓(xùn)練圖像分類模型的,測(cè)試集則是用于檢驗(yàn)訓(xùn)練完的模型。使用TensorFlow開發(fā)程序FashionMNIST數(shù)據(jù)集中,每張圖片都是28×28像素大小,每張圖片的像素值為0~255,總共被分為10類,訓(xùn)練集和測(cè)試集中的每張圖片都有對(duì)應(yīng)的標(biāo)簽。標(biāo)簽的數(shù)字對(duì)應(yīng)著程序分類之后的結(jié)果,將結(jié)果和數(shù)字對(duì)應(yīng),結(jié)合Matplotlib庫(kù)輸出一個(gè)圖表,提供更加直觀的可視化結(jié)果。FashionMNIST數(shù)據(jù)集分類,如表所示。標(biāo)簽名稱0T-shirt/top1Trouser2Pullover3Dress4Coat5Sandal6Shirt7Sneaker8Bag9Ankleboot使用TensorFlow開發(fā)程序找到了需要的數(shù)據(jù)集之后,接下來(lái)就是在cloth.py文件中下載數(shù)據(jù)集,并且對(duì)數(shù)據(jù)集進(jìn)行分類放置。TensorFlow已經(jīng)為用戶準(zhǔn)備好了下載數(shù)據(jù)集的方法,讀者只需要調(diào)用load_data()這個(gè)方法就可以下載和分類數(shù)據(jù)集了。下載數(shù)據(jù)集,如圖所示。下載數(shù)據(jù)集的代碼如下。fashion_mnist=keras.datasets.fashion_mnistfashion_mnist.load_data()=(train_images,train_labels),(test_images,test_labels)代碼所表達(dá)的意思是:將數(shù)據(jù)分成訓(xùn)練集和測(cè)試集兩個(gè)部分,每個(gè)部分分成圖片和標(biāo)簽,下載完成后,load_data()方法會(huì)返回4個(gè)NumPy數(shù)組,對(duì)應(yīng)著“(train_images,train_labels),(test_images,test_labels)”。下載方法寫好后保存程序,回到終端執(zhí)行cloth.py文件,執(zhí)行下載方法。使用TensorFlow開發(fā)程序?yàn)榱耸馆敵龅慕Y(jié)果更加直觀,這里加上了標(biāo)簽的名稱,作為Matplotlib繪制圖標(biāo)時(shí)的坐標(biāo)名稱,代碼如下。class_names=['T-shirt/top','Trouser','Pullover','Dress','Coat','Sandal','Shirt','Sneaker','Bag','Ankleboot']之后是數(shù)據(jù)的處理部分,先查看之前下載的數(shù)據(jù)集。需要用到Matplotlib庫(kù)查看經(jīng)過(guò)處理后的圖片。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ù)集之后,為了訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型,需要對(duì)這些數(shù)據(jù)集進(jìn)行預(yù)處理,將每張圖片0~255的像素?cái)?shù)值,轉(zhuǎn)化為0~1的像素?cái)?shù)值,因此需要將每一個(gè)訓(xùn)練集和測(cè)試集的圖片像素?cái)?shù)值都除以255.0,讓每一張圖片的最終像素?cái)?shù)值都在0~1之間,代碼如下。train_images=train_images/255.0test_images=test_images/255.0預(yù)處理完數(shù)據(jù)集中訓(xùn)練集和測(cè)試集的圖片,用Matplotlib庫(kù)檢查圖像的像素?cái)?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ā)程序訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型需要先構(gòu)建模型,配置模型的層(Layer),然后編譯和訓(xùn)練模型。層是構(gòu)成神經(jīng)網(wǎng)絡(luò)的基本組成部分,層會(huì)從輸入數(shù)據(jù)(經(jīng)過(guò)運(yùn)算后的一些數(shù)據(jù))中提取特征,利用這些數(shù)據(jù)解決問(wèn)題。本任務(wù)利用Keras的Sequential()方法,配置了3層模型,分別是扁平層和兩個(gè)密集連接或全連接神經(jīng)層。第一層扁平層的作用是將二維數(shù)組轉(zhuǎn)化為一維數(shù)組,因?yàn)閳D片是一個(gè)二維的數(shù)據(jù),因此用二維數(shù)組保存。為了訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型,需要將這個(gè)二維的數(shù)據(jù)轉(zhuǎn)換成一維的數(shù)據(jù)。將二維數(shù)組轉(zhuǎn)化為一維數(shù)組的操作叫作扁平化。第二層和第三層是密集連接層或全連接層,如果神經(jīng)網(wǎng)絡(luò)層數(shù)多的話,它們都可以計(jì)入隱藏層。第一個(gè)Dense層有128個(gè)神經(jīng)元,使用的激活函數(shù)是relu函數(shù);第二個(gè)Dense層會(huì)返回一個(gè)長(zhǎng)度為10的logits數(shù)組,每個(gè)元素有一個(gè)得分,用來(lái)表示當(dāng)前預(yù)測(cè)的圖像屬于10個(gè)標(biāo)簽中的哪一類。代碼如下。model=keras.Sequential([keras.layers.Flatten(input_shape=(28,28)),keras.layers.Dense(128,activation='relu'),keras.layers.Dense(10)])使用TensorFlow開發(fā)程序在編譯模型這個(gè)步驟中,需要確定一些關(guān)鍵的信息,比如損失函數(shù)、優(yōu)化器、指標(biāo)等,這些信息對(duì)最終模型的訓(xùn)練有著很大的影響。損失函數(shù)的作用是測(cè)量模型在訓(xùn)練期間的準(zhǔn)確率,優(yōu)化器的作用是決定模型如何根據(jù)數(shù)據(jù)和損失函數(shù)進(jìn)行更新,指標(biāo)的作用是監(jiān)控訓(xùn)練和測(cè)試步驟。代碼如下。pile(optimizer='adam',loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),metrics=['accuracy'])所有準(zhǔn)備步驟完成之后,開始訓(xùn)練模型。首先擬合數(shù)據(jù),調(diào)用model.fit()方法就可以擬合模型與訓(xùn)練數(shù)據(jù)。擬合就是對(duì)模型的訓(xùn)練,代碼里進(jìn)行了10個(gè)輪次的擬合。擬合模型如圖所示。擬合后可以看到模型的準(zhǔn)確率有0.9100。使用TensorFlow開發(fā)程序查看模型在測(cè)試集上的準(zhǔn)確度代碼如下,其結(jié)果如圖所示。test_loss,test_acc=model.evaluate(test_images,test_labels,verbose=2)print('\n測(cè)試集準(zhǔn)確度:',test_acc)模型在測(cè)試集上的準(zhǔn)確度并沒有在訓(xùn)練集上的高,測(cè)試集的準(zhǔn)確度大概為0.8851,這里有一個(gè)比較重要的概念——過(guò)擬合。過(guò)擬合指的是機(jī)器學(xué)習(xí)模型對(duì)新的輸入、一些不屬于訓(xùn)練集的輸入進(jìn)行預(yù)測(cè)、分類等操作時(shí)的表現(xiàn)并沒有在訓(xùn)練數(shù)據(jù)上表現(xiàn)得好。過(guò)擬合會(huì)記住訓(xùn)練集上的一些噪聲和細(xì)節(jié),這些內(nèi)容會(huì)對(duì)模型在新數(shù)據(jù)上的表現(xiàn)有負(fù)面影響。使用TensorFlow開發(fā)程序模型訓(xùn)練好之后,接下來(lái)就是對(duì)圖像進(jìn)行實(shí)際的預(yù)測(cè)。本任務(wù)的模型中增加了一層softmax層,用于將logits的線性輸出轉(zhuǎn)化成概率,代碼如下。probability_model=tf.keras.Sequential([model,tf.keras.layers.Softmax()])predictions=probability_model.predict(test_images)添加完成之后,對(duì)測(cè)試集的數(shù)據(jù)進(jìn)行預(yù)測(cè),并且輸出預(yù)測(cè)圖像的標(biāo)簽,對(duì)比預(yù)測(cè)的結(jié)果是否準(zhǔn)確,代碼如下。預(yù)測(cè)結(jié)果如圖所示。np.argmax(predictions[10])test_labels[10]在JupyterNotebook中,可以看到分段執(zhí)行的兩部分代碼:預(yù)測(cè)結(jié)果和圖像標(biāo)簽。這就是說(shuō),可以更加直觀地看出預(yù)測(cè)的結(jié)果是否跟標(biāo)簽標(biāo)記的相同。模型顯示第一張圖預(yù)測(cè)的結(jié)果,這張圖片的內(nèi)容屬于分類里的第十類,也就是Ankleboot(短靴)。從預(yù)測(cè)圖片的標(biāo)簽中可以知道,這張圖片確實(shí)屬于短靴,因此模型的預(yù)測(cè)結(jié)果是正確的。使用TensorFlow開發(fā)程序接下來(lái)就是利用Maplotlib庫(kù)將預(yù)測(cè)的結(jié)果繪制成圖表,更加直觀地顯示預(yù)測(cè)結(jié)果。為了能夠繪制圖表,需要?jiǎng)?chuàng)建兩個(gè)方法,分別是plot_image()和plot_value_array()。plot_image()方法用于繪制預(yù)測(cè)的圖片以及所屬類別和預(yù)測(cè)準(zhǔn)確率,plot_value_array()方法用于繪制預(yù)測(cè)結(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制圖表的方法后,接下來(lái)就是通過(guò)圖表的方式顯示預(yù)測(cè)結(jié)果的時(shí)刻。比如,測(cè)試集中的第22張圖的預(yù)測(cè)結(jié)果,第55張圖的預(yù)測(cè)結(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.電影評(píng)論分類評(píng)論在日常生活中是很常見的,比如在各種相應(yīng)的App中會(huì)有對(duì)餐飲店、景點(diǎn)、住宿、商家等的評(píng)論,評(píng)論的內(nèi)容各式各樣,有積極的評(píng)論、中肯的評(píng)論、惡意的評(píng)論等。本任務(wù)將關(guān)注對(duì)電影的評(píng)論,并將評(píng)論的內(nèi)容分為積極和消極兩類,這也是一個(gè)機(jī)器學(xué)習(xí)中重要且應(yīng)用廣泛的二分類問(wèn)題。本任務(wù)采用了網(wǎng)絡(luò)電影數(shù)據(jù)庫(kù)中的IMDB數(shù)據(jù)集,這個(gè)數(shù)據(jù)集包含50000條電影評(píng)論。任務(wù)中將這50000條評(píng)論按照好評(píng)和差評(píng)切割成訓(xùn)練集和測(cè)試集,兩個(gè)數(shù)據(jù)集都有25000條評(píng)論數(shù)據(jù)。任務(wù)的開始需要?jiǎng)?chuàng)建comment.py文件,用于存儲(chǔ)程序。命令如下。touchcomment.py本任務(wù)將在JupyterNotebook上進(jìn)行,因此運(yùn)行過(guò)程中的代碼需要讀者自行保存到創(chuàng)建好的comment.py文件中。首先導(dǎo)入TensorFlow庫(kù)、Keras庫(kù)和NumPy庫(kù),代碼如下。importtensorflowastffromtensorflowimportkerasimportnumpyasnp使用TensorFlow開發(fā)程序接下來(lái)用TensorFlow提供的下載數(shù)據(jù)集的方法,將IMDB數(shù)據(jù)集下載并保存到NumPy數(shù)組里,代碼如下。num_words參數(shù)保留了1萬(wàn)個(gè)常見單詞,低頻的詞匯會(huì)被丟棄。下載數(shù)據(jù)集,如圖所示。imdb=keras.datasets.imdb(train_data,train_labels),(test_data,test_labels)=imdb.load_data(num_words=10000)使用TensorFlow開發(fā)程序IMDB影評(píng)數(shù)據(jù)集是經(jīng)過(guò)處理后的數(shù)據(jù)集,每個(gè)單詞都被轉(zhuǎn)化成對(duì)應(yīng)的整數(shù)數(shù)字,標(biāo)簽有兩個(gè)數(shù)值,分別是0和1,0代表差評(píng),1代表好評(píng)。隨機(jī)輸出一條處理后的評(píng)論及其標(biāo)簽。評(píng)論數(shù)據(jù)、評(píng)論數(shù)據(jù)的標(biāo)簽。使用TensorFlow開發(fā)程序在輸出的評(píng)論數(shù)據(jù)中可以看到每個(gè)單詞都被轉(zhuǎn)化成數(shù)字,最終以數(shù)組的形式呈現(xiàn)。由于影評(píng)的長(zhǎng)度各不相同,但神經(jīng)網(wǎng)絡(luò)的輸入必須長(zhǎng)度一致,因此本任務(wù)使用填充數(shù)組的方式讓數(shù)組長(zhǎng)度標(biāo)準(zhǔn)化,可以調(diào)用Keras庫(kù)中的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,填充后最大長(zhǎng)度是256,所以每條影評(píng)最后的長(zhǎng)度都是256。隨機(jī)輸出其中的幾條數(shù)據(jù)查看長(zhǎng)度,輸出其中一個(gè)數(shù)組的內(nèi)容,查看填充的數(shù)據(jù)是否是0。檢查數(shù)據(jù)長(zhǎng)度、數(shù)據(jù)填充。使用TensorFlow開發(fā)程序接下來(lái)是構(gòu)建模型的階段,如圖所示。本任務(wù)的模型總共分為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ā)程序本任務(wù)選擇的損失函數(shù)是binary_crossentropy,它能夠度量概率分布之間的“距離”,代碼如下。pile(optimizer='adam',loss='binary_crossentropy',metrics=['accuracy'])本任務(wù)將會(huì)應(yīng)用驗(yàn)證集,驗(yàn)證集就是從訓(xùn)練集中剝離一定量的數(shù)據(jù),用于檢查模型在從未見過(guò)的數(shù)據(jù)上的準(zhǔn)確率。首先,創(chuàng)建驗(yàn)證集,代碼如下。x_val=train_data[:10000]partial_x_train=train_data[10000:]y_val=train_labels[:10000]partial_y_train=train_labels[10000:]使用TensorFlow開發(fā)程序接下來(lái)開始訓(xùn)練模型,訓(xùn)練的過(guò)程監(jiān)控驗(yàn)證集的損失值和準(zhǔ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ā)程序訓(xùn)練完模型之后,通過(guò)調(diào)用evaluate()方法評(píng)估模型的性能,代碼如下。圖6-43所示的模型評(píng)估的準(zhǔn)確率為87.35%。results=model.evaluate(test_data,test_labels,verbose=2)print(results)謝謝大家項(xiàng)目7AI云容器的開發(fā)目錄01

訓(xùn)練手寫數(shù)字識(shí)別模型02訓(xùn)練商品銷量預(yù)測(cè)模型03訓(xùn)練人臉識(shí)別模型01訓(xùn)練手寫數(shù)字識(shí)別模型訓(xùn)練手寫數(shù)字識(shí)別模型本任務(wù)需要部署JupyterNotebook容器,并且在JupyterNotebook工具中實(shí)現(xiàn)對(duì)手寫數(shù)字的識(shí)別,因此第一步需要安裝JupyterNotebook容器,命令如下,如圖所示。#dockerpulldaocloud.io/daocloud/tensorflow:1.14.0-py3-jupyter訓(xùn)練手寫數(shù)字識(shí)別模型鏡像下載完成后運(yùn)行JupyterNotebook,命令如下。并且復(fù)制運(yùn)行之后得到的URL,在瀏覽器打開它。運(yùn)行JupyterNotebook、瀏覽器中打開URL,如圖所示。#dockerrun--namemy-tensorflow-it-p8888:8888-v/tensorflow:/test/datadaocloud.io/daocloud/tensorflow:1.14.0-py3-jupyter訓(xùn)練手寫數(shù)字識(shí)別模型在測(cè)試手寫數(shù)字識(shí)別效果之前,先準(zhǔn)備數(shù)字0~9的手寫圖片,上傳到JupyterNotebook。單擊右側(cè)的“Upload”按鈕,上傳圖片,如圖所示。訓(xùn)練手寫數(shù)字識(shí)別模型上傳好文件之后,單擊“New”按鈕,在下拉列表中選擇“Python3”,新建一個(gè)Python3的筆記,開始訓(xùn)練手寫數(shù)字識(shí)別模型。訓(xùn)練手寫數(shù)字識(shí)別模型的代碼是項(xiàng)目6中任務(wù)6.3所用到的代碼,在這個(gè)任務(wù)的代碼的基礎(chǔ)上去掉最后的測(cè)試部分代碼,加入保存訓(xùn)練模型的代碼。新建Python3筆記、運(yùn)行訓(xùn)練代碼,本項(xiàng)目的訓(xùn)練代碼如下。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()訓(xùn)練手寫數(shù)字識(shí)別模型訓(xùn)練手寫數(shù)字識(shí)別模型確保代碼無(wú)誤之后,需要導(dǎo)入自己的手寫數(shù)字圖片,因此需要用到Python的imageio庫(kù)。安裝完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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論