日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【小白学PyTorch】18.TF2构建自定义模型

發布時間:2025/3/8 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【小白学PyTorch】18.TF2构建自定义模型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【機器學習煉丹術】的學習筆記分享

<<小白學PyTorch>>

擴展之Tensorflow2.0?| 17 TFrec文件的創建與讀取

擴展之Tensorflow2.0?| 16 TF2讀取圖片的方法

擴展之Tensorflow2.0?| 15 TF2實現一個簡單的服裝分類任務

小白學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 | 動態圖與靜態圖的淺顯理解

參考目錄:

  • 1 創建自定義網絡層

  • 2 創建一個完整的CNN

    • 2.1 keras.Model vs keras.layers.Layer

之前講過了如何用tensorflow構建數據集,然后這一節課講解如何用Tensorflow2.0來創建模型。

TF2.0中創建模型的API基本上都放到了它的Keras中了,Keras可以理解為TF的高級API,里面封裝了很多的常見網絡層、常見損失函數等。后續會詳細介紹keras的全面功能,本篇文章講解如何構建模型。

1 創建自定義網絡層

import?tensorflow?as?tf import?tensorflow.keras?as?kerasclass?MyLayer(keras.layers.Layer):def?__init__(self,?input_dim=32,?output_dim=32):super(MyLayer,?self).__init__()w_init?=?tf.random_normal_initializer()self.weight?=?tf.Variable(initial_value=w_init(shape=(input_dim,?output_dim),?dtype=tf.float32),trainable=True)?#?如果是false則是不參與梯度下降的變量b_init?=?tf.zeros_initializer()self.bias?=?tf.Variable(initial_value=b_init(shape=(output_dim),?dtype=tf.float32),?trainable=True)def?call(self,?inputs):return?tf.matmul(inputs,?self.weight)?+?self.biasx?=?tf.ones((3,5)) my_layer?=?MyLayer(input_dim=5,output_dim=10) out?=?my_layer(x) print(out.shape) >>>?(3,?10)

這個就是定義了一個TF的網絡層,其實可以看出來和PyTorch定義的方式非常的類似:

  • 這個類要繼承tf.keras.layers.Layer,這個pytorch中要繼承torch.nn.Module類似;

  • 網絡層的組件在__def__中定義,和pytorch的模型類相同;

  • call()和pytorch中的forward()的類似。

上面代碼中實現的是一個全連接層的定義,其中可以看到使用tf.random_normal_initializer()來作為參數的初始化器,然后用tf.Variable來產生網絡層中的權重變量,通過trainable=True這個參數說明這個權重變量是一個參與梯度下降的可以訓練的變量。

我通過tf.ones((3,5))產生一個shape為[3,5]的一個全是1的張量,這里面第一維度的3表示有3個樣本,第二維度的5就是表示要放入全連接層的數據(全連接層的輸入是5個神經元);然后設置的全連接層的輸出神經元數量是10,所以最后的輸出是(3,10)。

2 創建一個完整的CNN

import?tensorflow?as?tf import?tensorflow.keras?as?kerasclass?CBR(keras.layers.Layer):def?__init__(self,output_dim):super(CBR,self).__init__()self.conv?=?keras.layers.Conv2D(filters=output_dim,?kernel_size=4,?padding='same',?strides=1)self.bn?=?keras.layers.BatchNormalization(axis=3)self.ReLU?=?keras.layers.ReLU()def?call(self,?inputs):inputs?=?self.conv(inputs)inputs?=?self.ReLU(self.bn(inputs))return?inputsclass?MyNet(keras.Model):def?__init__?(self,input_dim=3):super(MyNet,self).__init__()self.cbr1?=?CBR(16)self.maxpool1?=?keras.layers.MaxPool2D(pool_size=(2,2))self.cbr2?=?CBR(32)self.maxpool2?=?keras.layers.MaxPool2D(pool_size=(2,2))def?call(self,?inputs):inputs?=?self.maxpool1(self.cbr1(inputs))inputs?=?self.maxpool2(self.cbr2(inputs))return?inputsmodel?=?MyNet(3) data?=?tf.random.normal((16,224,224,3)) output?=?model(data) print(output.shape) >>>?(16,?56,?56,?32)

這個是構建了一個非常簡單的卷積網絡,結構是常見的:卷積層+BN層+ReLU層。可以發現這里繼承的一個tf.keras.Model這個類。

2.1 keras.Model vs keras.layers.Layer

Model比Layer的功能更多,反過來說,Layer的功能更精簡專一。

  • Layer:僅僅用作張量的操作,輸入一個張量,輸出也要求是一個張量,對張量的操作都可以用Layer來封裝;

  • Model:一個更加復雜的結構,由多個Layer組成。 Model的話,可以使用.fit(),.evaluate(),.predict()等方法來快速訓練。保存和加載模型也是在Model這個級別進行的。

現在說一說上面的代碼和pytorch中的區別,作為一個對比學習、也作為一個對pytorch的回顧:

  • 卷積層Conv2D中,Keras中不用輸入輸入的通道數,filters就是卷積后的輸出特征圖的通道數;而PyTorch的卷積層是需要輸入兩個通道數的參數,一個是輸入特征圖的通道數,一個是輸出特征圖的通道數;

  • keras.layers.BatchNormalization(axis=3)是BN層,這里的axis=3說明第三個維度(從0開始計數)是通道數,是需要作為批歸一化的維度(這個了解BN算法的朋友應該可以理解吧,不了解的話去重新看我之前剖析BN層算法的那個文章吧,在文章末尾有相關鏈接)。pytorch的圖像的四個維度是:

【樣本數量,通道數,,】

而tensorflow是:

【樣本數量,,,通道數】

總之,學了pytorch之后,再看keras的話,對照的keras的API,很多東西都直接就會了,兩者的API越來越相似了。

上面最后輸出是(16, 56, 56, 32),輸入的是的維度,然后經過兩個最大池化層,就變成了了。

到此為止,我們現在應該是可以用keras來構建模型了。

- END -

往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載機器學習的數學基礎專輯獲取一折本站知識星球優惠券,復制鏈接直接打開:https://t.zsxq.com/662nyZF本站qq群704220115。加入微信群請掃碼進群(如果是博士或者準備讀博士請說明):

總結

以上是生活随笔為你收集整理的【小白学PyTorch】18.TF2构建自定义模型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。