簡體   English   中英

遷移學習 - 如何僅更改 TensorFlow 中的 output 層?

[英]Transfer Learning - How can I change only the output layer in TensorFlow?

我正在嘗試應用 Rusu 等人提出的一個想法。 in https://arxiv.org/pdf/1511.06295.pdf , which consists in training a NN changing the output layer according to the class of the input, ie, provided that we know the id of the input, we would pick the corresponding output 層。 這樣,所有隱藏層都將使用所有數據進行訓練,但每個 output 層將僅使用其相應類型的輸入數據進行訓練。

這是為了在遷移學習框架中取得良好的效果。

如何在 tensorflow 2.0 中實現這種“最后一層的更改”?

如果您使用model 子類化,您實際上可以定義您的前向傳遞。

class MyModel(tf.keras.Model):

    def __init__(self):
        super(Model, self).__init__()
        self.block_1 = BlockA()
        self.block_2 = BlockB()
        self.global_pool = layers.GlobalAveragePooling2D()
        self.classifier = Dense(num_classes)

    def call(self, inputs):
        if condition:
            x = self.block_1(inputs)
        else:
            x = self.block_2(inputs)
        x = self.global_pool(x)
        return self.classifier(x)

您仍然需要弄清楚反向傳播部分,但我認為如果您使用多輸出 model 並同時訓練所有“最后一層”,這相當容易。

暫無
暫無

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

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