Deep learning fastai:ValueError:\uu len\uuuu()应返回>;=0

Deep learning fastai:ValueError:\uu len\uuuu()应返回>;=0,deep-learning,language-model,Deep Learning,Language Model,在运行以下程序时- 我无法调用learner.fit,因为它抛出了上述错误 具体而言, 我试图训练一个语言模型,将文本文件转换成LanguageModelData并通过get\u model md=LanguageModelData。来自文本文件(路径,文本,**文件,bs=bs,bptt=bptt,最小频率=10) 学习者=md.get_模型(选择fn、em_sz、nh、nl、, 辍学I=0.05,辍学=0.05,wdrop=0.1,辍学线=0.02,辍学线H=0.05) learner.r

在运行以下程序时-

我无法调用
learner.fit
,因为它抛出了上述错误

具体而言,
我试图训练一个语言模型,将文本文件转换成
LanguageModelData
并通过
get\u model


md=LanguageModelData。来自文本文件(路径,文本,**文件,bs=bs,bptt=bptt,最小频率=10)
学习者=md.get_模型(选择fn、em_sz、nh、nl、, 辍学I=0.05,辍学=0.05,wdrop=0.1,辍学线=0.02,辍学线H=0.05) learner.reg_fn=partial(seq2seq_reg,alpha=2,beta=1) 学习者。clip=0.3 学习者。适合(3e-3,4)


ValueErrorTraceback(最近一次调用上次)
在()
---->1.适合学员(3e-3,4)
/nfsroot/data/home/yeshwanth/misc/fastai/fastai/courses/dl1/practice/fastai/learner.py适合(自我、lrs、n_循环、wds、**kwargs)
285 self.sched=无
286 layer_opt=self.get_layer_opt(lrs,wds)
-->287返回self.fit\u gen(self.model、self.data、layer\u opt、n\u cycle、**kwargs)
288
289 def预热(自身、lr、wds=无):
/nfsroot/data/home/yeshwanth/misc/fastai/fastai/courses/dl1/practice/fastai/learner.py in fit\u gen(自我、模型、数据、层选项、n\u循环、循环、循环、循环、循环保存名称、最佳保存名称、使用clr、使用clr测试版、指标、回调、使用wd调度、标准wd、wd调度、使用swa、swa启动、swa评估、swa评估)
232 metrics=metrics,callbacks=callbacks,reg\u fn=self.reg\u fn,clip=self.clip,fp16=self.fp16,
233 swa_model=self.swa_model如果使用swa else None,swa_start=swa_start,
-->234 swa_eval_freq=swa_eval_freq,**kwargs)
235
236 def get_layer_groups(self):返回self.models.get_layer_groups()
/nfsroot/data/home/yeshwanth/misc/fastai/fastai/courses/dl1/practice/fastai/model.py拟合(模型、数据、n_时代、选项、临界值、度量、回调、步进器、swa_模型、swa_开始、swa_评估频率,**kwargs)
159
160如果不是所有值:
-->161 val=验证(模型步进器,cur_data.val_dl,度量,顺序优先=顺序优先)
162停止=错误
163对于回调中的cb:stop=stop或cb.on\U end(VAL)
/验证中的nfsroot/data/home/yeshwanth/misc/fastai/fastai/courses/dl1/practice/fastai/model.py(stepper、dl、metrics、seq_first)
220步进器复位(错误)
221,无梯度上下文()
-->国际热核实验堆(dl)中(*x,y)的222:
223 y=VV(y)
224 preds,l=步进器。评估(VV(x),y)
/nfsroot/data/home/yeshwanth/misc/fastai/fastai/courses/dl1/practice/fastai/nlp.py in\uuuuu next\uuuu(self)
135
136定义下一个定义(自身):
-->137如果self.i>=self.n-1或self.iter>=len(self):提出停止迭代
138 bptt=self.bptt,如果np.random.random()<0.95 else self.bptt/2。
139序列长度=最大值(5,整数(np.随机.正常(bptt,5)))
ValueError:\uuuu len\uuuu()应返回>=0

看起来您的数据位于1.txt文件中,
LanguageModelData.from_text_files()
希望处理包含许多文件的文件夹

UPD:已解决!每个文件夹中必须至少有
bs
number个文件!否则,
LanguageModelData
LanguageModelLoader
的数据为空

我在验证过程中遇到了相同的错误,问题似乎出在
LanguageModelData()
constructed dataset:

for (*x, y) in md.trn_dl:
    set_trace()
x
应该是pytorch张量或形状
(smth,批次大小)
,而
y
-大小为
smth*批次大小的一维张量
。与
md.val\u dl
相同。在您的情况下,可能没有
(*x,y)
。数据有很大的问题
len(md.trn\u dl)
len(md.val\u dl)
不得等于0

我将感谢任何解决方案,谢谢你的提问


另外,较新版本的语言模型删除了
torchtext
,使调试更容易:

我还从len()中获得了ValueError,但我在有效目录和train目录中有很多文件(20000,150万)。fastai 1.0.30版本。我仍然不知道如何修复。即使在valid和train子目录中的1000个小文件子集上,len()为零的ValueError仍然会抛出。此外,对于构建语言模型应用程序,在任何官方示例和官方文档中都只使用from_csv函数,而不使用from_文件夹。因此,fastai中的一些功能似乎处于开发的前阿尔法阶段,也就是说,在aka未完成之前从未使用过编码。
for (*x, y) in md.trn_dl:
    set_trace()