Paddle零基礎(chǔ)深度學(xué)習(xí)第1周實(shí)踐作業(yè)_第1頁(yè)
Paddle零基礎(chǔ)深度學(xué)習(xí)第1周實(shí)踐作業(yè)_第2頁(yè)
Paddle零基礎(chǔ)深度學(xué)習(xí)第1周實(shí)踐作業(yè)_第3頁(yè)
Paddle零基礎(chǔ)深度學(xué)習(xí)第1周實(shí)踐作業(yè)_第4頁(yè)
Paddle零基礎(chǔ)深度學(xué)習(xí)第1周實(shí)踐作業(yè)_第5頁(yè)
已閱讀5頁(yè),還剩1頁(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)介

1、Paddle零基礎(chǔ)深度學(xué)習(xí)-第1周實(shí)踐作業(yè)Paddle零基礎(chǔ)深度學(xué)習(xí)-第1周實(shí)踐作業(yè)1. 作業(yè)要求課程中以1張圖片為例,測(cè)試了預(yù)測(cè)效果。請(qǐng)從原始mnist數(shù)據(jù)集中,隨機(jī)抽取100張圖片,測(cè)試模型的分類準(zhǔn)確率。注:模型請(qǐng)使用課程中【項(xiàng)目9】的模型【作業(yè)內(nèi)容】代碼跑通請(qǐng)大家根據(jù)課上所學(xué)內(nèi)容,編寫代碼,保證程序跑通。代碼運(yùn)行成功且有結(jié)果(打印100張圖片的分類準(zhǔn)確率)2. 設(shè)計(jì)思路說(shuō)明1. 作業(yè)的data中有數(shù)據(jù)文件mnist.json.gz,把那個(gè)文件拷貝到work文件夾中,或直接下載data/data49019文件夾中的mnist.json.gz,再上傳到work文件夾中去;2. 測(cè)試過(guò)程所用的

2、網(wǎng)絡(luò)結(jié)構(gòu)與訓(xùn)練過(guò)程的網(wǎng)絡(luò)結(jié)構(gòu)是一樣的,只不過(guò)數(shù)據(jù)不同,因此測(cè)試過(guò)程代碼與訓(xùn)練過(guò)程代碼類似;3. 而要讀取的100個(gè)隨機(jī)的測(cè)試數(shù)據(jù),也要在前面讀取數(shù)據(jù)的方法load_data()中處理,原來(lái)的模型中已經(jīng)訓(xùn)練類型的數(shù)據(jù)進(jìn)行了shuffle()處理,本項(xiàng)目中將其擴(kuò)展為對(duì)所有類型的數(shù)據(jù)都進(jìn)行shuffle()處理,這樣驗(yàn)證和測(cè)試時(shí)就都可以使用隨機(jī)抽取的數(shù)據(jù)了;4訓(xùn)練過(guò)程需要進(jìn)行幾個(gè)epoch來(lái)提高模型的準(zhǔn)確率,而測(cè)試過(guò)程直接讀取訓(xùn)練過(guò)程保存的優(yōu)化后的模型參數(shù),則不需要循環(huán),只需要運(yùn)行一次,給出預(yù)測(cè)結(jié)果值即可。測(cè)試程序的實(shí)現(xiàn)如下:3. 代碼實(shí)現(xiàn)過(guò)程.1導(dǎo)入庫(kù)Importosmportrandommpor

3、tpaddlemportpaddle.fluidasfluidrompaddle.fluid.dygraph.nnimportConv2D,Pool2D,LinearmportnumpyasnpromPILimportImagemportgzipmportjson3.2.數(shù)據(jù)加載處理定義數(shù)據(jù)集讀取器,這里使用頁(yè)目的程序結(jié)構(gòu),對(duì)程序做1處的修改定義數(shù)據(jù)集讀取器parammode:讀取數(shù)據(jù)的類型,有三種值train:默認(rèn),訓(xùn)練集數(shù)據(jù)valid:驗(yàn)證集數(shù)據(jù)eval:測(cè)試集數(shù)據(jù)defload_data(mode=train):數(shù)據(jù)文件datafile=./work/mnist.json.gzprint

4、(loadingmnistdatasetfrom.format(datafile)data=json.load(gzip.open(datafile)train_setval_set,eval_set=data數(shù)據(jù)集相關(guān)參數(shù),圖片高度MG_R0WS,圖片寬度MG_COLSIMG_ROWS=28IMG_COLS=28ifmode=train:ifmode=train:imgs=train_setOlabels=train_set1elifmode=valid:imgs=val_setOlabels=val_set1elifmode=eval:imgs=eval_set0labels=eval_s

5、et1imgs_length=len(imgs)assertlen(imgs)=len(labels),lengthoftrain_imgs()shouldbethesameastrain_labels()format(len(imgs),len(labels)index_list=list(range(imgs_length)讀入數(shù)據(jù)時(shí)用到的bathsieBATCHSIZE=100定義數(shù)據(jù)生成器defdata_generator():ifmode=train:原來(lái)這里只對(duì)訓(xùn)練數(shù)據(jù)做了隨機(jī)抽取處理random.shuffle(index_list)1在這里修改為對(duì)所有類型的數(shù)據(jù)都進(jìn)行隨機(jī)抽取處

6、理random.shuffle(index_list)imgs_list=labels_list=foriinindex_list:img=np.reshape(imgsi,1,IMG_ROWS,IMG_COLS).astype(float32)label=np.reshape(labelsi,1).astype(int64)imgs_listappend(img)labelsistappend(label)iflen(imgsist)=BATCHSIZE:yieldnp.array(imgsist),np.array(labels_list)imgs_list=labels_list=如果剩

7、余數(shù)據(jù)的數(shù)目小予ATCHSIZE,則剩余數(shù)據(jù)一起構(gòu)成一個(gè)大小為n(imgs_list)的minibathiflen(imgs_list)0:yieldnp.array(imgsist),np.array(labels_list)returndata_generator調(diào)用加載數(shù)據(jù)的函數(shù)ain_loader=load_data(train)3.3.定義網(wǎng)絡(luò)結(jié)構(gòu)定義模型結(jié)構(gòu)classMNIST(fluid.dygraph.Layer):def_init_(self):super(MNIST,self)._init_()定義一個(gè)卷積層,使用elu激活函數(shù)self.conv1=Conv2D(num_c

8、hannels=1,num_filters=20,filter_size=5,stride=1,padding=2,act=relu)定義一個(gè)池化層,池化核為,步長(zhǎng)為2,使用最大池化方式self.pool1=Pool2D(pool_size=2,pool_stride=2,pool_type=max)定義一個(gè)卷積層,使用blu激活函數(shù)self.conv2=Conv2D(num_channels=20,num_filters=20,filter_size=5,stride=1,padding=2,act=relu)定義一個(gè)池化層,池化核為,步長(zhǎng)為2,使用最大池化方式self.pool2=Pool

9、2D(pool_size=2,pool_stride=2,pool_type=max)定義一個(gè)全連接層,輸出節(jié)點(diǎn)數(shù)為0self.fc=Linear(input_dim=980,output_dim=10,act=softmax)定義網(wǎng)絡(luò)的前向計(jì)算過(guò)程defforward(self,inputs,label):x=self.convl(inputs)x=self.pooll(x)x=self.conv2(x)x=self.pool2(x)x=fluid.layers.reshape(x,x.shape0,980)x=self.fc(x)iflabelisnotNone:acc=fluid.lay

10、ers.accuracy(input=x,label=label)returnx,accelse:returnx.進(jìn)行訓(xùn)練進(jìn)行訓(xùn)練,這里使用項(xiàng)目的代碼,添加保存全局的模型參數(shù)處的代碼在使用PU機(jī)器時(shí),可以將Use_gpu變量設(shè)置成Trueuse_gpu=Trueplace=fluid.CUDAPlace(O)ifuse_gpuelsefluid.CPUPlace()withfluid.dygraph.guard(place):model=MNIST()model.train()EPOCH_NUM=5BATCH_SIZE=100定義學(xué)習(xí)率,并加載優(yōu)化器參數(shù)到模型中total_steps=(int

11、(60000/BATCH_SIZE)+1)*EPOCH_NUMlr=fluid.dygraph.PolynomialDecay(0.01,total_steps,0.001)使用Adam優(yōu)化器optimizer=fluid.optimizer.AdamOptimizer(learning_rate=lr,parameter_list=model.parameters()forepoch_idinrange(EPOCH_NUM:forbatch_id,datainenumerate(train_loader():準(zhǔn)備數(shù)據(jù),變得更加簡(jiǎn)潔image_data,label_data=dataimage

12、=fluid.dygraph.to_variable(image_data)label=fluid.dygraph.to_variable(label_data)前向計(jì)算的過(guò)程,同時(shí)拿到模型輸出值和分類準(zhǔn)確率predict,acc=model(image,label)avg_acc=fluid.layers.mean(acc)計(jì)算損失,取一個(gè)批次樣本損失的平均值loss=fluid.layers.cross_entropy(predict,label)avg_loss=fluid.layers.mean(loss)每訓(xùn)練了200批次的數(shù)據(jù),打印下當(dāng)前os的情況ifbatch_id%200=0:

13、print(epoch:,batch:,lossis:,accis.format(epoch_id,batch_id,avg_loss.numpy(),avg_acc.numpy()后向傳播,更新參數(shù)的過(guò)程avg_loss.backward。optimizerminimize(avg_loss)model.clear_gradients()保存模型參數(shù)和優(yōu)化器的參數(shù)fluid.save_dygraph(model.state_dict(),./checkpoint/mnist_epoch.format(epoch_id)fluid.save_dygraph(optimizer.state_di

14、ct(),./checkpoint/mnist_epoch.format(epoch_id)fluidsavedygraph(model.statedict(),mnist)2保存全局的模型參數(shù)3.5進(jìn)行測(cè)試3.這里是新增的內(nèi)容,使用與訓(xùn)練過(guò)程類似的代碼,完成預(yù)測(cè)過(guò)程,能從測(cè)試集中隨機(jī)取出100個(gè)樣本進(jìn)行預(yù)測(cè),并顯示各個(gè)樣本的計(jì)算損失及準(zhǔn)確率測(cè)試數(shù)據(jù)讀取器Pst_loader=load_data(evaF)use_gpu=Trueplace=fluid.CUDAPlace(O)ifuse_gpuelsefluid.CPUPlace()測(cè)試過(guò)程如下withfluid.dygraph.guard(

15、place):print(starttesting)加載模型參數(shù)model=MNIST()model_state_dict_=fluid.load_dygraph(mnist)這里選擇使甩et_dict,因?yàn)閘oad_dict即將過(guò)時(shí)model.set_dict(model_state_dict)model.eval()forbatch_id,datainenumerate(test_loader():準(zhǔn)備數(shù)據(jù),變得更加簡(jiǎn)潔image_data,label_data=dataimage=fluid.dygraph.to_variable(image_data)label=fluid.dygra

16、ph.to_variable(label_data)前向計(jì)算的過(guò)程,同時(shí)拿到模型輸出值和分類準(zhǔn)確率predict,acc=model(image,label)avg_acc=fluid.layers.mean(acc)計(jì)算損失,取一個(gè)批次樣本損失的平均值loss=fluid.layers.cross_entropy(predict,label)avg_loss=fluid.layers.mean(loss)這里將每一個(gè)圖片的損失與準(zhǔn)確率都打印出來(lái),因?yàn)橐@示結(jié)構(gòu)用,所以通過(guò)ch_id+1讓圖片從1開始顯示print(batch:,lossis:,accisformat(batchid+1,avgloss.numpy(),avgacc.numpy().心得與體會(huì)1. 從老師留了作業(yè)后,一直想做,一直靜不下心來(lái)做作業(yè),總是有各個(gè)事情給耽誤了作業(yè):)2. 前幾天的一個(gè)打卡作業(yè),感覺(jué)看API文檔和老師的資料都已經(jīng)很仔細(xì)了,自己認(rèn)為那天的知識(shí)學(xué)的很好了,結(jié)果打卡作業(yè)的分?jǐn)?shù)卻很不理想,今天終于有時(shí)間了,再返回頭去看課件資料和

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論