Skip to content

A significant difference between the results obtained from testing after training and reloading the model after saving. How to save and reload the model correctly for reasoning? #73

@FanY1999

Description

@FanY1999

I don't understand why the reasoning effect of reloading the trained model is very poor. Did I write something wrong? Looking forward to your reply.

the key code is as follows:

train mode

  • some codes of train mode(in main())
model=BertForSequenceClassification.from_pretrained(config.bert_path, return_dict=True,num_labels=config.num_classes).to(device)
delta_config = AutoDeltaConfig.from_dict({"delta_type":"adapter"})
delta = AdapterModel.from_config(delta_config, backbone_model=model)
delta.freeze_module()
delta.log()
train(config, model, train_iter, dev_iter, test_iter,delta)
  • train() part
for i, (trains, labels) in enumerate(train_iter):
    batch={'input_ids':trains[0],'attention_mask':trains[2],'labels':labels}
    outputs=model(**batch)
    loss=outputs.loss
    model.zero_grad()
    loss.backward()
    optimizer.step()
    ……
    ……
    dev_acc, dev_loss = evaluate(config, model, dev_iter)
    if dev_loss < dev_best_loss:
        dev_best_loss = dev_loss
        delta.save_finetuned(config.save_path)
test(config, model, test_iter)    # test after training finished
  • result
    acc=0.7735

resoning/test mode

  • some codes of reasoning/test mode(in main())
model=BertForSequenceClassification.from_pretrained(config.bert_path, return_dict=True,num_labels=config.num_classes).to(device)
delta=AdapterModel.from_finetuned(config.save_path,backbone_model=model)
test(config, model, test_iter)
  • result
    acc=0.5713

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions