将ML模型拆分为2个模型

2024-10-01 15:36:40 发布

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

有一个非常简单的通用训练的ML模型,我希望能够将其拆分为具有以下结构的其他两个模型:

初始模型有N层,每个层有M个神经元。InitialModel可以被视为线性回归或分类任务,因此输出将是单个值

作为一个具体的例子,我可以如下处理我的初始模型:

class SimpleAgeRegrNet3D(nn.Module):
    def __init__(self):
        super(SimpleAgeRegrNet3D, self).__init__()
        self.encoder = nn.Sequential(
            # 64
            nn.Conv3d(1, 6, kernel_size=3), 
            nn.MaxPool3d(2),
            nn.ReLU(True),
            # 31
            nn.Conv3d(6, 16, kernel_size=3), 
            nn.MaxPool3d(2),
            nn.ReLU(True),
            # 14
            nn.Conv3d(16, 120, kernel_size=3),
            nn.MaxPool3d(2),
            nn.ReLU(True),
            # 6
            nn.Conv3d(120, 84, kernel_size=3),
            nn.MaxPool3d(2),
            nn.ReLU(True),
            # 2
            nn.Conv3d(84, 1, kernel_size=2),
        )
        
    def forward(self, x):
        return self.encoder(x)

MyInput -> InitialModel -> Output (shape=(1,))

改造后:

MyInput -> Model1 (output shape = (M,)) -> (input shape= (M,))Model2 -> Output (shape=(1,))

理想情况下,如果我的训练的初始模型有N个层,我想创建Model1,它有第一个N*3/4层(例如),Model2有初始模型的其余层。最后,我希望能够重建它们,因此如果我有Model1,而Person2有Model2,我可以将Model1的输出发送给Person2,然后他将进行最终推断


Tags: 模型selftruesizennkernelrelushape

热门问题