tanluren / yolov3-channel-and-layer-pruning

yolov3 yolov4 channel and layer pruning, Knowledge Distillation 层剪枝,通道剪枝,知识蒸馏
Apache License 2.0
1.5k stars 446 forks source link

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all() #130

Closed dengly closed 3 years ago

dengly commented 3 years ago

我使用已经训练好的模型进行稀疏训练报错了

shortcut sparse training
Reading labels (12410 found, 0 missing, 0 empty for 12410 images): 100%|█| 12410/12410 [06:07<00:00, 33.80
Model Summary: 61 layers, 5.87412e+06 parameters, 5.87412e+06 gradients
Starting training for 300 epochs...

     Epoch   gpu_mem      GIoU       obj       cls     total      soft    rratio   targets  img_size
  0%|                                                                             | 0/388 [00:01<?, ?it/s]
Traceback (most recent call last):
  File "train.py", line 542, in <module>
    train()  # train normally
  File "train.py", line 308, in train
    for i, (imgs, targets, paths, _) in pbar:  # batch -------------------------------------------------------------
  File "/home/zzw/miniconda3/lib/python3.8/site-packages/tqdm/std.py", line 1167, in __iter__
    for obj in iterable:
  File "/home/zzw/miniconda3/lib/python3.8/site-packages/torch/utils/data/dataloader.py", line 435, in __next__
    data = self._next_data()
  File "/home/zzw/miniconda3/lib/python3.8/site-packages/torch/utils/data/dataloader.py", line 1085, in _next_data
    return self._process_data(data)
  File "/home/zzw/miniconda3/lib/python3.8/site-packages/torch/utils/data/dataloader.py", line 1111, in _process_data
    data.reraise()
  File "/home/zzw/miniconda3/lib/python3.8/site-packages/torch/_utils.py", line 428, in reraise
    raise self.exc_type(msg)
ValueError: Caught ValueError in DataLoader worker process 0.
Original Traceback (most recent call last):
  File "/home/zzw/miniconda3/lib/python3.8/site-packages/torch/utils/data/_utils/worker.py", line 198, in _worker_loop
    data = fetcher.fetch(index)
  File "/home/zzw/miniconda3/lib/python3.8/site-packages/torch/utils/data/_utils/fetch.py", line 44, in fetch
    data = [self.dataset[idx] for idx in possibly_batched_index]
  File "/home/zzw/miniconda3/lib/python3.8/site-packages/torch/utils/data/_utils/fetch.py", line 44, in <listcomp>
    data = [self.dataset[idx] for idx in possibly_batched_index]
  File "/home/zzw/Desktop/yolov3-channel-and-layer-pruning/utils/datasets.py", line 453, in __getitem__
    img, labels = random_affine(img, labels,
  File "/home/zzw/Desktop/yolov3-channel-and-layer-pruning/utils/datasets.py", line 654, in random_affine
    if targets == None:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
dengly commented 3 years ago

已经解决,是我修改代码错了

bichengming2020 commented 2 years ago

咋解决的呀