簡體   English   中英

如何使用預訓練模型的 model 架構但沒有權重

[英]How to use model architecture of pretrained models but no weights

我想使用 ResNet model 架構並想更改最后幾層; 我怎樣才能只使用 Tensorflow 中 model 動物園的 model 架構?

To use a ResNet model, you can choose a select few from tensorflow.keras.applications including ResNet50 , ResNet101 , and ResNet152 . 然后,如果要進行遷移學習,則需要更改一些默認的 arguments。 對於您的問題,您需要將weights參數設置為None 否則,會提供'imagenet'權重。 此外,您需要將include_top設置為False ,因為您的問題的類數可能與 ImageNet 不同。 最后,您需要在input_shape中提供數據的形狀。 這看起來像這樣。

base = tf.keras.applications.ResNet50(include_top=False, weights=None, input_shape=shape)

要獲得 model 的摘要,您可以執行以下操作

base.summary()

要添加自己的頭部,您可以使用功能 API。 您將需要添加一個Input層和您自己的Dense層,這將與您的任務相對應。 這可能是

input = tf.keras.layers.Input(shape=shape)
base = base(input)
out = tf.keras.layers.Dense(num_classes, activation='softmax')(base)

最后,構造一個model,你可以做

model = tf.keras.models.Model(input, out)

Model構造函數需要 2 個 arguments。 第一個是 model 的輸入,第二個是輸出。 請注意,調用model.summary()會將 ResNet 基礎顯示為單獨的層。 要查看 ResNet 基礎的所有層,您可以執行model.layers[1].summary() ,或者您可以修改有關如何構建 model 的代碼。 第二種方法是

out = tf.keras.layers.Dense(num_classes, activation='softmax')(base.output)
model = tf.keras.models.Model(base.input, out)

現在您可以僅使用model.summary()查看所有層。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM