cnn模型在bert之后



我尝试从bert模型的最后一个隐藏状态获得输出,并将其通过CNN-model

class MixModel(nn.Module):
def __init__(self,pre_trained='distilbert-base-uncased'):
super().__init__()        
self.bert =  AutoModel.from_pretrained('distilbert-base-uncased')
self.hidden_size = self.bert.config.hidden_size
self.conv = nn.Conv1d(in_channels=1, out_channels=256, kernel_size=5, padding='valid', stride=1)
self.relu = nn.ReLU()
self.pool = nn.MaxPool1d(kernel_size= 256- 5 + 1)
self.dropout = nn.Dropout(0.3)
self.clf = nn.Linear(self.hidden_size*2,6)



def forward(self,inputs, mask , labels):

cls_hs = self.bert(input_ids=inputs,attention_mask=mask, return_dict= False) 
x=cls_hs
# x = torch.cat(cls_hs[0]) # x= [416, 64, 768]
x = self.conv(x)
x = self.relu(x)
x = self.pool(x)
x = self.dropout(x)
x = self.clf(x)



return x

我犯了这个错误TypeError:conv1d((接收到无效的参数组合-get(tuple,Parameter,Parameter,tuple、str、tuple和int(,但应为以下之一:

  • (张量输入,张量权重,张量偏差,int步长元组,int填充元组,int扩展元组,int组(不匹配,因为某些参数具有无效的类型:(!tuple!,!Parameter!,参数!,!tuple!,!str!,,!tuble!,int(
  • (张量输入、张量权重、张量偏差、int步长元组、str填充、int扩展元组、int组(不匹配,因为某些参数的类型无效:(!tuple!,!Parameter!,,!Parameter!,!tuple!,str,!tuble!,int(
def __init__(self,pre_trained='distilbert-base-uncased'):
super().__init__()        
self.bert =  AutoModel.from_pretrained('distilbert-base-uncased')
self.hidden_size = self.bert.config.hidden_size
self.conv = nn.Conv1d(in_channels=768, out_channels=256, kernel_size=5, padding='valid', stride=1)
self.relu = nn.ReLU()
self.pool = nn.MaxPool1d(kernel_size= 256- 5 + 1)
self.dropout = nn.Dropout(0.3)
self.clf1 = nn.Linear(256,256)
self.clf2 = nn.Linear(256,6)

也在x = self.conv(x)使用permute(0,2,1)之前in_channel=变压器的输出(768(out_channel=由您决定(过滤器数量(

相关内容

最新更新