簡體   English   中英

training = False 實際上對 TensorFlow 遷移學習有什么作用?

[英]What does training = False actually do for Tensorflow Transfer Learning?

我在這里有這段代碼:

base_model = tf.keras.applications.resnet_v2.ResNet50V2(input_shape=input_shape, include_top=False, weights='imagenet')

base_model.trainable = False

inputs = tf.keras.Input(shape=input_shape)

x = data_augmentation(inputs)

x = tf.keras.applications.resnet_v2.preprocess_input(x)

x = base_model(x, training = False)

當我們將它用於 base_model 時,training = False 實際上做了什么? 我知道訓練是一個布爾值,用於指定我們要在推理模式訓練期間運行,但是按照 Tensorflow 上的遷移學習指南,我無法弄清楚它實際上做了什么。

我們設置 base_model.trainable = False,這意味着層不會學習,我們將使用它們從 imagenet 中學到的東西。 但是 base_model(x, training = False) 做了什么? 我知道這不會在訓練期間運行,當我調用 fit() 方法時,由於訓練設置為 False,base_model 發生了什么?

我讀過它與微調和批處理規范層有關,但我有點迷茫。

我還應該使用微調嗎? 如果我打算不使用它,因為模型無論如何都表現良好,我應該設置 training = True 嗎? 還是根本不設置該值?

一般來說,這取決於你的層。 例如,dropout 層僅在training=True時將值設置為 0。 另一個例子是 BatchNormalization 層,它在訓練和推理過程中的工作方式不同。 對於其他層,例如經典的密集層,它沒有任何區別。 如果您真的想了解所有細節,則必須閱讀所有使用的圖層及其特定行為。

暫無
暫無

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

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