### 伪代码
import torch
from torch.optim import lr_scheduler, optimizer
from transformers import BertTokenizer, BertModel, BertPreTrainedModel
from torch import nn
# bert = BertModel('bert-base-uncased')
class BertModelCoustom(BertPreTrainedModel):
"""
利用transformers定制化神经网络模型
"""
def __init__(self, config):
super(BertModelCoustom, self).__init__(config)
# 导入配置,下面的语句对应后面实例化时候的from_pretrained
self.bert = BertModel(config)
self.linear = nn.Linear(768, 128)
self.hidden_dropout = nn.Dropout(config.hidden_dropout_prob)
def forward(self, x):
# 定义前向传播
return self.hidden_dropout(self.linear(self.bert(x)))
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
bmc = BertModelCoustom.from_pretrained('bert-base-uncased')
for n, p in bmc.linear.named_parameters():
print("线形层模型参数:")
print(n)
print(p)
break
for n, p in bmc.bert.named_parameters():
print("Bert模型参数:")
print(n)
print(p)
break
print("hidden_dropout:", bmc.hidden_dropout)
# 调用模型
x = torch.tensor([[1, 2, 3]])
output = bmc(x)
loss = output['loss']
loss.backward()
optimizer.step()
lr_scheduler.step()
利用Transformers自定义一个神经网络结构
猜你喜欢
转载自blog.csdn.net/qq_38901850/article/details/125184359
今日推荐
周排行