Bert+Resnet联合学习,pytorch模型实例化后为空
我正在写一个简单的联合模型,它有两个分支,一个分支是resnet50,另一个是bert。我将两个输出连接起来,并将其传递给一个简单的线性层,该层有两个输出神经元 我实现了以下模型:Bert+Resnet联合学习,pytorch模型实例化后为空,pytorch,resnet,bert-language-model,torchvision,Pytorch,Resnet,Bert Language Model,Torchvision,我正在写一个简单的联合模型,它有两个分支,一个分支是resnet50,另一个是bert。我将两个输出连接起来,并将其传递给一个简单的线性层,该层有两个输出神经元 我实现了以下模型: import torch from torch import nn import torchvision.models as models import torch.nn as nn from collections import OrderedDict from transformers import BertMo
import torch
from torch import nn
import torchvision.models as models
import torch.nn as nn
from collections import OrderedDict
from transformers import BertModel
class BertResNet(nn.Module):
def __init__(self):
super(BertResNet, self).__init__()
# resnet
resnet50 = models.resnet50(pretrained=True)
n_inputs = resnet50.fc.in_features
# compressed embedding space
classifier = nn.Sequential(OrderedDict([
('fc1', nn.Linear(n_inputs, 512))
]))
resnet50.fc = classifier # 512 out resnet
bert = BertModel.from_pretrained('bert-base-uncased')
# final classification layer
classification = nn.Linear(512 + 768, 2)
#print(resnet50)
#print(bert)
def forward(self, img, text):
res_emb = self.resnet50(img)
bert_emb = self.bert(text)
combined = torch.cat(res_emb,
bet_emb, dim=1)
out = self.classification(combined)
return out
但当我实例化时,我得到一个空模型:
bert_resnet = BertResNet()
print(bert_resnet)
输出:
贝特雷斯内特
listbert_resnet.parameters还返回[]您从未将模型分配给BertResNet类的对象的任何属性。__init__方法中存在临时变量,但一旦完成,这些变量将被丢弃。应将其分配给self: 定义初始自我: superBertResNet,self.\u init__ resnet self.resnet50=models.resnet50pretrained=True n_输入=self.resnet50.fc.in_功能 压缩嵌入空间 self.classifier=nn.SequentialOrderedDict[ “fc1”,nn.Linearn_输入,512 ] self.resnet50.fc=分类器512 out resnet self.bert=BertModel.from_预训练的'bert-base-uncased' 最终分类层 自分类=nn.Linear512+768,2