【问题标题】:IndexError: index 0 is out of bounds for axis 0 with size 0? see detail in output1111IndexError:索引 0 超出轴 0 的范围,大小为 0?详见 output1111
【发布时间】:2022-01-13 18:06:37
【问题描述】:
#count the number of fake and real videos
def number_of_real_and_fake_videos(data_list):
    header_list = ["file","label"]
    lab = pd.read_csv('/content/drive/My Drive/Gobal_metadata.csv',names=header_list)
    fake = 0
    real = 0
    for i in data_list:
    temp_video = i.split('/')[-1]
    label = lab.iloc[(labels.loc[labels["file"] == temp_video].index.values[0]),1]
    if(label == 'FAKE'):
        fake+=1
    if(label == 'REAL'):
        real+=1
    return real,fake
# load the labels and video in data loader
import random
import pandas as pd
from sklearn.model_selection import train_test_split

header_list = ["file","label"]
labels = pd.read_csv('/content/drive/My Drive/Gobal_metadata.csv',names=header_list)
#print(labels)
train_videos = video_files[:int(0.8*len(video_files))]
valid_videos = video_files[int(0.8*len(video_files)):]
print("train : " , len(train_videos))
print("test : " , len(valid_videos))
# train_videos,valid_videos = train_test_split(data,test_size = 0.2)
# print(train_videos)

print("TRAIN: ", "Real:",number_of_real_and_fake_videos(train_videos)[0]," Fake:",number_of_real_and_fake_videos(train_videos)[1])
print("TEST: ", "Real:",number_of_real_and_fake_videos(valid_videos)[0]," Fake:",number_of_real_and_fake_videos(valid_videos)[1])


im_size = 112
mean = [0.485, 0.456, 0.406]
std = [0.229, 0.224, 0.225]

train_transforms = transforms.Compose([
                                        transforms.ToPILImage(),
                                        transforms.Resize((im_size,im_size)),
                                        transforms.ToTensor(),
                                        transforms.Normalize(mean,std)])

test_transforms = transforms.Compose([
                                        transforms.ToPILImage(),
                                        transforms.Resize((im_size,im_size)),
                                        transforms.ToTensor(),
                                        transforms.Normalize(mean,std)])
train_data = video_dataset(train_videos,labels,sequence_length = 10,transform = train_transforms)
#print(train_data)
val_data = video_dataset(valid_videos,labels,sequence_length = 10,transform = train_transforms)
train_loader = DataLoader(train_data,batch_size = 4,shuffle = True,num_workers = 2)
valid_loader = DataLoader(val_data,batch_size = 4,shuffle = True,num_workers = 2)
image,label = train_data[0]
im_plot(image[0,:,:,:])

输出:

train :  8720
test :  2180
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-32-7ad703495b44> in <module>()
     14 # print(train_videos)
     15 
---> 16 print("TRAIN: ", "Real:",number_of_real_and_fake_videos(train_videos)[0]," Fake:",number_of_real_and_fake_videos(train_videos)[1])
     17 print("TEST: ", "Real:",number_of_real_and_fake_videos(valid_videos)[0]," Fake:",number_of_real_and_fake_videos(valid_videos)[1])
     18 

<ipython-input-29-8723d4941fd5> in number_of_real_and_fake_videos(data_list)
      7   for i in data_list:
      8     temp_video = i.split('/')[-1]
----> 9     label = lab.iloc[(labels.loc[labels["file"] == temp_video].index.values[0]),1]
     10     if(label == 'FAKE'):
     11       fake+=1

IndexError: index 0 is out of bounds for axis 0 with size 0

【问题讨论】:

  • 您应该详细说明您的问题。

标签: python pandas numpy index-error


【解决方案1】:

这两行代码正在访问一个可能不存在的列表索引

print("TRAIN: ", "Real:",number_of_real_and_fake_videos(train_videos)[0]," Fake:",number_of_real_and_fake_videos(train_videos)[1])
print("TEST: ", "Real:",number_of_real_and_fake_videos(valid_videos)[0]," Fake:",number_of_real_and_fake_videos(valid_videos)[1])

也许尝试更安全的选择

if len(number_of_real_and_fake_videos(train_videos)) > 1:
    print("TRAIN: ", "Real:",number_of_real_and_fake_videos(train_videos)[0]," Fake:",number_of_real_and_fake_videos(train_videos)[1])

另一个也一样

if len(number_of_real_and_fake_videos(valid_videos)) > 1:
    print("TEST: ", "Real:",number_of_real_and_fake_videos(valid_videos)[0]," Fake:",number_of_real_and_fake_videos(valid_videos)[1])

关于它发生的原因,我们需要数据等。但这是一个很好的起点,可以找出导致问题的原因,尝试打印数据等。

【讨论】:

  • 我在我的代码中更改了这两行,但错误并没有修复。
  • 抱歉,第二个写错了,再试一次。无论如何,这只会修复崩溃的程序,而不是真正的问题,即数据不是您所期望的。
  • 怎么解决,训练模型时也出现这个错误。
  • 需要查看数据等,需要学习如何自己调试。我解决了您遇到的导致程序崩溃的问题:)
猜你喜欢
  • 1970-01-01
  • 2020-04-24
  • 2019-04-01
  • 2017-02-16
  • 2021-11-03
  • 2016-07-29
  • 2021-07-17
  • 2021-05-24
  • 2018-07-23
相关资源
最近更新 更多