加载语言\模型\学习者fastai时出现问题

2024-04-25 20:34:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我对fastai图书馆有问题。我的代码如下:

import fastai
from fastai.text import *
import os
import pandas as pd
import fastai
from fastai import *
lab = df.columns[0]

data_lm = TextLMDataBunch.from_csv(r'/AWD', 'data.csv', label_cols = lab, text_cols = ['text'])

data_clas = TextClasDataBunch.from_csv(r'/AWD', 'data.csv', vocab = data_lm.train_ds.vocab, bs = 256,label_cols = lab, text_cols=['text'])
data_lm.save('data_lm_export.pkl')
data_clas.save('data_clas.pkl')

learn = language_model_learner(data_lm,AWD_LSTM,drop_mult = 0.3)

learn.lr_find()
learn.recorder.plot(skip_end=10)

learn.fit_one_cycle(10,1e-2,moms=(0.8,0.7))

learn.save('fit_head')
learn.load('fit_head')

我的数据相当大,所以fit_one_周期中的每个历元大约持续6小时。我的资源只允许我在SLURM作业70h中训练模型,所以我的整个脚本将被取消。我想把我的剧本分成几部分,第一部分最长的部分是学习和保存fit_head。一切正常,之后我想加载我的模型以再次训练它,但我遇到了以下错误:

**运行时错误:顺序RNN的加载状态为错误: 0.encoder.weight的大小不匹配:从检查点复制带有形状torch.size([54376,400])的参数,当前模型中的形状为torch.size([54720,400])。 **

我在github/stack帖子上检查了类似的问题,并尝试了下面这样的解决方案,但找不到任何有用的方法

data_clas.vocab.stoi = data_lm.vocab.stoi
data_clas.vocab.itos = data_lm.vocab.itos

是否有可能在没有此问题的情况下加载经过训练的模型


Tags: csvtextfrom模型importdatalablearn
1条回答
网友
1楼 · 发布于 2024-04-25 20:34:01

执行learner.save()操作时,磁盘上只保存模型权重,而不保存包含模型体系结构信息的模型状态dict

要在不同的会话中训练模型,必须首先定义模型本身。记住使用相同的代码来定义新模型。由于您的数据非常繁重,如您所述,您可以使用非常小的数据子集(~16条记录)来创建此新模型,然后执行learn.load(model_path),您应该能够恢复培训

您可以使用learn.data.train_dl = new_dl修改培训数据

相关问题 更多 >