【小白学PyTorch】15.TF2实现一个简单的服装分类任务
<<小白學(xué)PyTorch>>
小白學(xué)PyTorch | 14 tensorboardX可視化教程
小白學(xué)PyTorch | 13 EfficientNet詳解及PyTorch實(shí)現(xiàn)
小白學(xué)PyTorch | 12 SENet詳解及PyTorch實(shí)現(xiàn)
小白學(xué)PyTorch | 11 MobileNet詳解及PyTorch實(shí)現(xiàn)
小白學(xué)PyTorch | 10 pytorch常見運(yùn)算詳解
小白學(xué)PyTorch | 9 tensor數(shù)據(jù)結(jié)構(gòu)與存儲(chǔ)結(jié)構(gòu)
小白學(xué)PyTorch | 8 實(shí)戰(zhàn)之MNIST小試牛刀
小白學(xué)PyTorch | 7 最新版本torchvision.transforms常用API翻譯與講解
小白學(xué)PyTorch | 6 模型的構(gòu)建訪問遍歷存儲(chǔ)(附代碼)
小白學(xué)PyTorch | 5 torchvision預(yù)訓(xùn)練模型與數(shù)據(jù)集全覽
小白學(xué)PyTorch | 4 構(gòu)建模型三要素與權(quán)重初始化
小白學(xué)PyTorch | 3 淺談Dataset和Dataloader
小白學(xué)PyTorch | 2 淺談?dòng)?xùn)練集驗(yàn)證集和測(cè)試集
小白學(xué)PyTorch | 1 搭建一個(gè)超簡單的網(wǎng)絡(luò)
小白學(xué)PyTorch | 動(dòng)態(tài)圖與靜態(tài)圖的淺顯理解
參考目錄:
0 為什么學(xué)TF
1 Tensorflow的安裝
2 數(shù)據(jù)集構(gòu)建
2 預(yù)處理
3 構(gòu)建模型
4 優(yōu)化器
5 訓(xùn)練與預(yù)測(cè)
0 為什么學(xué)TF
之前的15節(jié)課的pytorch的學(xué)習(xí),應(yīng)該是讓不少朋友對(duì)PyTorch有了一個(gè)全面而深刻的認(rèn)識(shí)了吧 (如果你認(rèn)真跑代碼了并且認(rèn)真看文章了的話) 。
大家都會(huì)比較Tensorflow2和pytorch之間孰優(yōu)孰劣,但是我們也并不是非要二者選一,兩者都是深度學(xué)習(xí)的工具,其實(shí)我們或多或少應(yīng)該了解一些比較好。就好比,PyTorch是沖鋒槍,TensorFlow是步槍,在上戰(zhàn)場(chǎng)前,我們可以選擇帶上沖鋒槍還是步槍,但是在戰(zhàn)場(chǎng)上,可能手中的槍支沒有子彈了,你只能在地上隨便撿了一把槍。很多時(shí)候,用Pytorch還是Tensorflow的選擇權(quán)不在自己。
此外,了解了TensorFlow,大家才能更好的理解PyTorch和TF究竟有什么區(qū)別。我見過有的大佬是TF和PyTorch一起用在一個(gè)項(xiàng)目中,數(shù)據(jù)讀取用PyTorch然后模型用TF構(gòu)建。
總之,大家有時(shí)間有精力的話,順便學(xué)學(xué)TF也不虧,更何況TF2.0現(xiàn)在已經(jīng)優(yōu)化了很多。本系列預(yù)計(jì)用3節(jié)課來簡單的入門一下Tensorflow2.
和PyTorch的第一課一樣,我們直接做一個(gè)簡單的小實(shí)戰(zhàn)。MNIST手寫數(shù)字分類,Fashion MNIST時(shí)尚服裝分類。
1 Tensorflow的安裝
安裝TensorFlow的方法很簡單,就是在控制臺(tái)執(zhí)行:
pip?install?tensorflow?--user這里的--user是賦予這個(gè)命令執(zhí)行權(quán)限的,一般我都會(huì)帶上。
2 數(shù)據(jù)集構(gòu)建
# keras是TF的高級(jí)API,用起來更加的方便,一般也是用keras。 import?tensorflow?as?tf from?tensorflow?import?keras import?numpy?as?np導(dǎo)入需要用到的庫函數(shù). 正如torchvision.datasets中一樣,keras.datasets中也封裝了一些常用的數(shù)據(jù)集。
fashion_mnist?=?keras.datasets.fashion_mnist (train_images,?train_labels),?(test_images,?test_labels)?=?fashion_mnist.load_data() print('train_images?shape:',train_images.shape) print('train_labels?shape:',train_labels.shape) print('test_images?shape:',test_images.shape) print('test_labels?shape:',test_labels.shape)輸出結(jié)果是:
訓(xùn)練數(shù)據(jù)集中有60000個(gè)樣本,每一個(gè)樣本和MNIST手寫數(shù)字大小是一樣的,是大小的,然后每一個(gè)樣本有一個(gè)標(biāo)簽,這個(gè)標(biāo)簽和MNIST也是一樣的,是從0到9,是一個(gè)十分類任務(wù)。
來看一下這些類別有哪些:
| 0 | T-shirt | 5 | Sandal |
| 1 | Trouser | 6 | Shirt |
| 2 | Pullover | 7 | Sneaker |
| 3 | Dress | 8 | Bag |
| 4 | Coat | 9 | Ankle boot |
這里學(xué)學(xué)單詞吧:
T-shirt就是T型的襯衫,就是短袖,我感覺前面沒有扣子的那種也叫T-shirt;
Shirt就是長袖的那種襯衫;
Trouser是褲子;
pullover是毛衣,套頭毛衣,就是常說的衛(wèi)衣吧感覺;
dress連衣裙;
coat是外套;
sandal是涼鞋;
sneaker是運(yùn)動(dòng)鞋;
ankle boot是短靴,是到腳踝的那種靴子;
這里補(bǔ)充一個(gè)吧,sweater,是毛線衣,運(yùn)動(dòng)衫,這個(gè)和pullover有些類似,個(gè)人感覺主要的區(qū)分在于運(yùn)動(dòng)系列的可以叫做sweater,其他的毛衣衛(wèi)衣是pullover。
運(yùn)動(dòng)短袖T-shirt+運(yùn)動(dòng)衛(wèi)衣sweater是我秋天去健身房的穿搭。
2 預(yù)處理
這里不做圖像增強(qiáng)之類的了,上面的數(shù)據(jù)中,圖像像素值是從0到255的,我們要把這些標(biāo)準(zhǔn)化成0到1的范圍。
train_images?=?train_images?/?255.0 test_images?=?test_images?/?255.03 構(gòu)建模型
#?模型搭建 model?=?keras.Sequential([keras.layers.Flatten(input_shape=(28,?28)),keras.layers.Dense(128,?activation='relu'),keras.layers.Dense(10,?activation='softmax') ])這就是一個(gè)用keras構(gòu)建簡單模型的例子:
keras.layers.Flatten是把的二維度拉平成一個(gè)維度,因?yàn)檫@里是直接用全連接層而不是卷積層進(jìn)行處理的;
后面跟上兩個(gè)全連接層keras.layers.Dense()就行了。我們可以發(fā)現(xiàn),這個(gè)全連接層的參數(shù)和PyTorch是有一些區(qū)別的:
PyTorch的全連接層需要一個(gè)輸入神經(jīng)元數(shù)量和輸出數(shù)量torch.nn.Linear(5,10),而keras中的Dense是不需要輸入?yún)?shù)的keras.layers.Dense(10);
keras中的激活層直接封裝在了Dense函數(shù)里面,所以不需要像PyTorch一樣單獨(dú)寫一個(gè)nn.ReLU()了。
4 優(yōu)化器
model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])定義優(yōu)化器和損失函數(shù),在keras中叫做對(duì)模型進(jìn)行編譯compile(在C語言中,在運(yùn)行代碼之前都需要對(duì)代碼進(jìn)行編譯嘛)。損失函數(shù)和優(yōu)化器還有metric衡量指標(biāo)的設(shè)置都在模型的編譯函數(shù)中設(shè)置完成。
上面使用Adam作為優(yōu)化器,然后損失函數(shù)用了交叉熵,然后衡量模型性能的使用了準(zhǔn)確率Accuracy。
5 訓(xùn)練與預(yù)測(cè)
model.fit(train_images,?train_labels,?epochs=10)這就是訓(xùn)練過程,相比PyTorch而言,更加的簡單簡潔,但是不像PyTorch那樣靈活。
test_loss,?test_acc?=?model.evaluate(test_images,?test_labels) print('\nTest?accuracy:',?test_acc)這個(gè).evaluate方法是對(duì)模型的驗(yàn)證集進(jìn)行驗(yàn)證的,因?yàn)楸敬稳蝿?wù)中并沒有對(duì)訓(xùn)練數(shù)據(jù)再劃分出驗(yàn)證集,所以這里直接使用測(cè)試數(shù)據(jù)了。
大家應(yīng)該能理解訓(xùn)練集、驗(yàn)證集和測(cè)試集的用途和區(qū)別吧,我在第二課講過這個(gè)內(nèi)容,在此不多加贅述。
predictions?=?model.predict(test_images)這個(gè).predict方法才是用在測(cè)試集上,進(jìn)行未知標(biāo)簽樣本的類別推理的。
本次內(nèi)容到此為止,大家應(yīng)該對(duì)keras和tensorflow有一個(gè)直觀淺顯的認(rèn)識(shí)了。當(dāng)然tensorflow也有一套類似于PyTorch中的dataset,dataloader的那樣自定義的數(shù)據(jù)集加載器的方法,在后續(xù)內(nèi)容中會(huì)深入淺出的學(xué)一下。
- END -往期精彩回顧適合初學(xué)者入門人工智能的路線及資料下載機(jī)器學(xué)習(xí)及深度學(xué)習(xí)筆記等資料打印機(jī)器學(xué)習(xí)在線手冊(cè)深度學(xué)習(xí)筆記專輯《統(tǒng)計(jì)學(xué)習(xí)方法》的代碼復(fù)現(xiàn)專輯 AI基礎(chǔ)下載機(jī)器學(xué)習(xí)的數(shù)學(xué)基礎(chǔ)專輯獲取一折本站知識(shí)星球優(yōu)惠券,復(fù)制鏈接直接打開:https://t.zsxq.com/662nyZF本站qq群704220115。加入微信群請(qǐng)掃碼進(jìn)群(如果是博士或者準(zhǔn)備讀博士請(qǐng)說明):總結(jié)
以上是生活随笔為你收集整理的【小白学PyTorch】15.TF2实现一个简单的服装分类任务的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【CV】图像分割二十年,盘点影响力最大的
- 下一篇: 【NLP】一文了解基于深度学习的自然语言