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