Pytorch使用现有模型的零件或片段

2024-10-04 05:27:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个关于皮托克的“怎么做”的问题。你知道吗

假设我在Pytorch中有两个模型,我想在第二个模型中输入第一个模型中间的输出。但是第一个模型不是连续的,它非常复杂,可能有内部分支。玩具示例:

Model description

How can I make a version/subclass/copy of model 1 that outputs both the final and the middle tensors?

到目前为止我能做什么?你知道吗

到目前为止,我找到的唯一方法是了解整个模型及其所有forward连接,因此我精确地复制了forward方法,并使其输出所需的中间张量。你知道吗

但这是非常麻烦的,因为我真的不想重建具有高度复杂性的整个模型。这太容易出错了。你知道吗

有没有更简单的方法,比如说在凯拉斯?你知道吗

看看Keras做起来有多容易

只需获取中间层的输出,并将其作为基于model1的新模型的输出:

middleTensor = model1.get_layer(layer_name).output #or model1.layers[i]
newModel1 = Model(model1.input, [middleTensor,model1.output])

现在我有了一个模型1的版本,它可以输出最终的和中间的张量,而不需要任何努力去深入理解或复制它。你知道吗

Is there any similar approach in pytorch?


Tags: the方法模型layer示例outputmake分支