Informer2020 icon indicating copy to clipboard operation
Informer2020 copied to clipboard

ValueError: __len__() should return >= 0

Open yuanweisama opened this issue 1 year ago • 6 comments

你好!请问为什么我的代码数据都和测试数据一样了,但是还是报出以下错误?能帮助我吗?谢谢! Args in experiment: Namespace(model='informer', data='ETTh1', root_path='./data/', data_path='ETTh1.csv', features='M', target='OT', freq='d', checkpoints='./checkpoints/', seq_len=98, label_len=48, pred_len=31, enc_in=7, dec_in=7, c_out=7, d_model=512, n_heads=8, e_layers=2, d_layers=1, s_layers=[3, 2, 1], d_ff=2048, factor=5, padding=0, distil=True, dropout=0.05, attn='prob', embed='timeF', activation='gelu', output_attention=False, do_predict=False, mix=True, cols=None, num_workers=0, itr=2, train_epochs=6, batch_size=32, patience=3, learning_rate=0.0001, des='test', loss='mse', lradj='type1', use_amp=False, inverse=False, use_gpu=True, gpu=0, use_multi_gpu=False, devices='0,1,2,3', detail_freq='d') Use GPU: cuda:0

start training : informer_ETTh1_ftM_sl98_ll48_pl31_dm512_nh8_el2_dl1_df2048_atprob_fc5_ebtimeF_dtTrue_mxTrue_test_0>>>>>>>>>>>>>>>>>>>>>>>>>> train 602 Traceback (most recent call last): File "D:\python\PycharmProjects\派桑\work_data\student_data\robot_student\Informer2020-main\main_informer.py", line 105, in exp.train(setting) File "D:\python\PycharmProjects\派桑\work_data\student_data\robot_student\Informer2020-main\exp\exp_informer.py", line 128, in train vali_data, vali_loader = self._get_data(flag = 'val') File "D:\python\PycharmProjects\派桑\work_data\student_data\robot_student\Informer2020-main\exp\exp_informer.py", line 96, in _get_data print(flag, len(data_set)) ValueError: len() should return >= 0

Process finished with exit code 1

yuanweisama avatar Apr 16 '23 18:04 yuanweisama

parser.add_argument('--pred_len', type=int, default=24, help='prediction sequence length')

我的是参数值,设置太高了,造成以上错误,建议更改参数值试一下 或者debug一下

Lin-Yun-GitHub avatar Jun 12 '23 09:06 Lin-Yun-GitHub

我也遇到过这种错误,错误原因是我调用了data.dataloader.py中的Dataset_ETT_hour或Dataset_ETT_minute而不是Dataset_Custom,前两个类中它们__read_data__()方法取训练集验证集测试集的大小是固定的,而最后Dataset_Custom它取数据是按照比例来的,故用前两个类的__read_data__()会令在取vali作为dataset的时候取不到任何值,因为所有的值已经被train作为dataset。所以解决办法就是Dataset_Custom作为制作dataset的类,而不是前两者。 有不明白的地方可以debug一下、

ANTAGNIST avatar Aug 02 '23 14:08 ANTAGNIST

parser.add_argument('--data', type=str, default='custom', help='dataset type')这里换乘custom即可

ANTAGNIST avatar Sep 12 '23 13:09 ANTAGNIST

换成自己的数据集遇到同样的问题,改成parser.add_argument('--data', type=str, default='custom', help='dataset type')还是报错ValueError: len() should return >= 0

zhumeng666666 avatar Jan 15 '24 03:01 zhumeng666666

是不是run的参数配置有问题呢

warmful-sun avatar Jun 23 '24 06:06 warmful-sun