保存pytorch模型中的嵌入层

保存pytorch模型中的嵌入层,pytorch,Pytorch,我有这个模型: 类模型(nn.Module): 定义初始化(自): super()。\uuuu init\uuuuu() self.conv1=nn.Conv2d(输入通道=12,输出通道=64,内核大小=3,步长=1,填充=1) #self.conv2=nn.Conv2d(输入通道=64,输出通道=64,内核大小=3,步长=1,填充=1) self.fc1=nn.Linear(24576128) self.bn=nn.BatchNorm1d(128) self.dropout1=nn.Drop

我有这个模型:

类模型(nn.Module):
定义初始化(自):
super()。\uuuu init\uuuuu()
self.conv1=nn.Conv2d(输入通道=12,输出通道=64,内核大小=3,步长=1,填充=1)
#self.conv2=nn.Conv2d(输入通道=64,输出通道=64,内核大小=3,步长=1,填充=1)
self.fc1=nn.Linear(24576128)
self.bn=nn.BatchNorm1d(128)
self.dropout1=nn.Dropout2d(0.5)
self.fc2=nn.线性(128,10)
self.fc3=nn.线性(10,3)
def前进(自身,x):
x=F.relu(自转换1(x))
#x=F.relu(自转换2(x))
x=F.max_pool2d(x,(2,2))
#打印(x.shape)
x=x.view(-124576)
x=self.bn(F.relu(self.fc1(x)))
x=自辍学1(x)
嵌入阶段=F.relu(自fc2(x))
x=self.fc3(嵌入级)
返回x
我想保存嵌入层,就像我在这里保存模型一样:

model = model()
torch.save(model.state_dict(), 'C:\project\count_speakers\model_pytorch.h5')
谢谢,
Ayal

我不确定我是否理解“保存嵌入层”的含义,但如果您想保存fc2或fc3或其他内容,则可以使用torch.save()进行保存。
例如:保存fc3:
torch.save(model.fc3),'C:\…\fc3.pt')

编辑: Op希望获得嵌入_阶段的输出。
您可以通过以下几种方式实现:

  • 使用
    model.load\u state\u dict(torch.load('C:\…\model\u pytorch.h5'))加载您的模型。
    然后
    model=nn.Sequential(*列表(model.children())[:-1])
    。模型的输出为嵌入_阶段

  • 制作一个与第一个
    Model()
    完全相同的
    Model2(nn.Module)
    ,但将
    def forward(self,x)中的
    return x
    替换为
    return embeding\u stage
    。然后将第一个模型的状态加载到第二个模型中,如下所示:
    model2.load\u state\u dict(torch.load('C:\…\model\u pytorch.h5')

    像这样,将加载fc3,但不使用。model2(x)的输出将是嵌入_阶段


保存
嵌入\u stage
是什么意思?你想保存
self.fc2()
layer吗?为什么
torch.save
不能满足你的需要?我的意思是,保存后,我想再次加载模型,然后测试模型,但不是得到完整模型的结果,而是提前一步,即:val_输出=模型(val_输入),但是val_输出的大小为10,类似于fc2