1.加載conf文件
x = import_module('models.' + model_name)
config = x.Config(dataset, embedding)
2.加載model,初始化conf裏面值
model = x.Model(config).to(config.device)
3.加載模型訓練
model.train()
optimizer = torch.optim.Adam(model.parameters(), lr=config.learning_rate)
爲何要先聲明是train
https://blog.csdn.net/qq_38410428/article/details/101102075
在eval的時候也要先聲明
def evaluate(config, model, data_iter, test=False):
model.eval()
loss_total = 0
4.進行模型訓練
model(trains)對應forward的參數
outputs = model(trains)
model.zero_grad()
loss = F.cross_entropy(outputs, labels)
loss.backward()
# fgm.attack() # 在embedding上添加對抗擾動
# outputs = model(trains)
# model.zero_grad()
# loss_adv = F.cross_entropy(outputs, labels)
# loss_adv.backward() # 反向傳播,並在正常的grad基礎上,累加對抗訓練的梯度
# fgm.restore() # 恢復embedding參數
# # 梯度下降,更新參數
optimizer.step()