Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 迁移学习-如何仅更改TensorFlow中的输出层?_Python_Tensorflow2.0_Reinforcement Learning_Transfer Learning - Fatal编程技术网

Python 迁移学习-如何仅更改TensorFlow中的输出层?

Python 迁移学习-如何仅更改TensorFlow中的输出层?,python,tensorflow2.0,reinforcement-learning,transfer-learning,Python,Tensorflow2.0,Reinforcement Learning,Transfer Learning,我试图应用Rusu等人在年提出的一个想法,即训练一个神经网络,根据输入的类别改变输出层,即,如果我们知道输入的id,我们将选择相应的输出层。这样,所有隐藏层都将使用所有数据进行训练,但每个输出层将仅使用其相应类型的输入数据进行训练 这是为了在迁移学习框架中取得良好效果 如何在tensorflow 2.0中实现这一“最后一层的更改”?如果使用,您实际上可以定义前进过程 classmymodel(tf.keras.Model): 定义初始化(自): 超级(模型,自我)。\uuuu初始化 self.b

我试图应用Rusu等人在年提出的一个想法,即训练一个神经网络,根据输入的类别改变输出层,即,如果我们知道输入的id,我们将选择相应的输出层。这样,所有隐藏层都将使用所有数据进行训练,但每个输出层将仅使用其相应类型的输入数据进行训练

这是为了在迁移学习框架中取得良好效果

如何在tensorflow 2.0中实现这一“最后一层的更改”?

如果使用,您实际上可以定义前进过程

classmymodel(tf.keras.Model):
定义初始化(自):
超级(模型,自我)。\uuuu初始化
self.block_1=BlockA()
self.block_2=BlockB()
self.global_pool=layers.globalaveragepoolg2d()
self.classifier=密集(num\u类)
def呼叫(自我,输入):
如果条件:
x=自块_1(输入)
其他:
x=自身块2(输入)
x=自全局_池(x)
返回自分类器(x)

你仍然需要弄清楚后支撑部分,但我认为如果你使用多输出模型并同时训练所有“最后一层”,这是相当容易的。

我最初想到的方法与此类似,但后支撑部分出现了问题。“同时”训练最后几层是什么意思?我的意思是,我只想训练与所用输入类型相对应的最后一层…用多个输入和输出训练模型。例如,如果您训练一个数字和一个dog/cat分类器,您将同时从digit数据集中输入一个批次,从dog/cat数据集中输入另一个批次。你将有两个一个热向量作为输出。我不太理解多输入的概念。。。这意味着我的隐藏层(至少第一层)也必须改变大小,对吗?我真正想要的是保持隐藏层的结构,然后调用与输入类对应的输出层。