ValueError: num_samples should be a positive integer value, but got num_samples=0
Closed this issue · 11 comments
This looks like a simple thing like an argument missing but if you have a suggestion I'm interested.
The command line was << bash scripts/train.sh yc2 true >>.
Traceback (most recent call last):
File "src/train.py", line 706, in
main()
File "src/train.py", line 642, in main
num_workers=opt.num_workers, pin_memory=opt.pin_memory)
File "XXX/.conda/envs/videocap/lib/python3.7/site-packages/torch/utils/data/dataloader.py", line 270, in init
sampler = RandomSampler(dataset, generator=generator) # type: ignore[arg-type]
File "XXX.conda/envs/videocap/lib/python3.7/site-packages/torch/utils/data/sampler.py", line 103, in init
"value, but got num_samples={}".format(self.num_samples))
ValueError: num_samples should be a positive integer value, but got num_samples=0
please check your Dataset, which may empty (len == 0) causes the error.
du -ks data/anet/*
16075976 data/anet/anet_c3d
14476240 data/anet/anet_c3d.zip
2404464 data/anet/anet_clip_b16
505216 data/anet/anet_clip_b16.zip
Maybe the commands in the readme prepare anet and not yc2 ?
Thanks for your help.
The provided features are for the ActivityNet. You need to extract the features for YouCook2 in order to run with the yc2 option.
Please refer to #2 for the feature extraction.
I have the same error when I try to train MART model on ActivityNet Captions,but i don't have any way to fix it.What shall I do?If you can give some suggestions I will sincerely thank you!
@JiangTianyu51147 Could you tell me more about your situation (what command you run, which dataset you tried, etc.) so that I can help you?
I input the command
bash scripts/train.sh anet true
and reported an error
Traceback (most recent call last):
File "src/train.py", line 684, in
main()
File "src/train.py", line 632, in main
num_workers=opt.num_workers, pin_memory=opt.pin_memory)
File "/XXX/anaconda3/envs/vlcap/lib/python3.7/site-packages/torch/utils/data/dataloader.py", line 270, in init
sampler = RandomSampler(dataset, generator=generator) # type: ignore[arg-type]
File "/XXX/anaconda3/envs/vlcap/lib/python3.7/site-packages/torch/utils/data/sampler.py", line 103, in init
"value, but got num_samples={}".format(self.num_samples))
ValueError: num_samples should be a positive integer value, but got num_samples=0
I have downloaded env feature and lang feature and my VLCAP folder directory is as follows:
|── cache
|── data
│ └── anet
│ ├── env_c3d
│ ├── lang_feature
│ └── sent_feature
├── densevid_eval
├── scripts
├── src
│ └── rtransformer
└── video_feature
and I have changed data_path
in VLCAP/src/rtransformer/recursive_caption_dataset.py
but it still reports the same error.
I don't know what should I do.Thank you very much for your help! :)
Can I know what is your current setting in RecursiveCaptionDataset?
num_samples=0 error typically occurs when you have wrong path.
data_path = {
"anet": {
"env_feat": "data/anet/anet_c3d/",
"clip_feat": "data/anet/anet_clip_b16/lang_feature/",
"sent_feat": "data/anet/anet_clip_b16/sent_feature/"
},
"yc2": {
"env_feat": "data/yc2/yc2_c3d/",
"clip_feat": "data/yc2/yc2_clip_b16/lang_feature/",
"sent_feat": "data/yc2/yc2_clip_b16/sent_feature/"
}
}
This is my setting in XXX/VLCAP/src/rtransformer/recursive_caption_dataset.py
data_path = {
"anet": {
"env_feat": "XXX/VLCAP/data/anet/env_c3d/",
"clip_feat": "XXX/VLCAP/data/anet/anet_clip_b16/lang_feature/",
"sent_feat": "XXX/VLCAP/data/anet/anet_clip_b16/sent_feature/"
},
"yc2": {
"env_feat": "XXX/VLCAP/data/yc2/yc2_c3d/",
"clip_feat": "XXX/VLCAP/data/yc2/yc2_clip_b16/lang_feature/",
"sent_feat": "XXX/VLCAP/data/yc2/yc2_clip_b16/sent_feature/"
}
}
and now my VLCAP folder directory is as follows:
├── cache
├── data
│ └── anet
│ ├── anet_clip_b16
│ │ ├── lang_feature
│ │ └── sent_feature
│ └── env_c3d
├── densevid_eval
│ ├── anet_data
│ ├── coco-caption
│ │ ├── annotations
│ │ ├── pycocoevalcap
│ │ │ ├── bleu
│ │ │ │ └── pycache
│ │ │ ├── cider
│ │ │ │ └── pycache
│ │ │ ├── meteor
│ │ │ │ ├── data
│ │ │ │ └── pycache
│ │ │ ├── pycache
│ │ │ ├── rouge
│ │ │ │ └── pycache
│ │ │ └── tokenizer
│ │ │ └── pycache
│ │ └── pycocotools
│ └── yc2_data
├── results
├── scripts
├── src
│ ├── pycache
│ └── rtransformer
│ └── pycache
└── video_feature
Thank you! :)
Unless it is a full path, maybe you don't need "XXX/VLCAP/" in your path.
This error is finally solved and it really is a path error.I changed the path and it is running now.Once again sincerely thank you! :):):)