0

我已经训练了一个具有 3 个卷积层的自动编码器。现在我想使用编码器部分进行分类任务。因此,我加载模型并在一个新类中使用编码器部分,并添加一个具有十个神经元的线性层。问题是当我用主要权重训练网络时它不起作用,但是当我重置权重时它起作用。这是我加载和定义新网络的方式。

loadedM = AE3class(encoded_space_dim=2,NumFL1=int(bestParams['NumF1']),NumFL2=int(bestParams['NumF2']),
               NumFL3=int(bestParams['NumF3']),latent=int(bestParams['latent_layer']))
PATH = "BestModel.pth"
loadedM.load_state_dict(torch.load(PATH))

class finetune(nn.Module):
    def __init__(self):
        super().__init__()
        self.convlayer = (loadedM.encoder_cnn)
        self.fc = (loadedM.encoder_lin[0:1])
        self.flatten = nn.Flatten(start_dim=1)
        self.out = nn.Linear(in_features=94,out_features=10)
    def forward(self, x):
        # Apply convolutions
        x = self.convlayer(x)
        # Flatten
        x = self.flatten(x)
        x = self.fc(x)
        x = self.out(x)
        return x
fineTunModel = finetune()
for layer in fineTunModel.children():
    if hasattr(layer, 'reset_parameters'):
        layer.reset_parameters()

这是主要自动编码器的架构。

在此处输入图像描述

4

0 回答 0