“TypeError: h5py objects cannot be pickled”报错问题和“EOFError: Ran out of input”报错问题![](https://i-blog.csdnimg.cn/blog_migrate/c548ce9a9bd8fa427b8bca017612da84.png)
不知道大家有没有遇到过这种报错问题,这个是我在Run一个新项目的时候,数据处理训练的时候遇到的问题
这种错误通常发生在尝试将不支持序列化的对象传递给子进程进行处理时。h5py 对象属于不支持序列化的对象,因此在进行进程间通信时会引发该错误
下面就来看一下,解决这个问题的一种有效方式:
直接简单粗暴:
training_data_loader = DataLoader(dataset=train_set, num_workers=num_workers, batch_size=batch_size, pin_memory=False,
shuffle=shuffle)
val_data_loader = DataLoader(dataset=val_set, num_workers=num_workers, batch_size=batch_size, pin_memory=False,
shuffle=shuffle)
testing_data_loader = DataLoader(dataset=test_set, num_workers=num_workers, batch_size=batch_size, pin_memory=False,
shuffle=shuffle)
去掉代码中的
num_workers=num_workers
变成:
training_data_loader = DataLoader(dataset=train_set, batch_size=batch_size, pin_memory=False,
shuffle=shuffle)
val_data_loader = DataLoader(dataset=val_set, batch_size=batch_size, pin_memory=False,
shuffle=shuffle)
testing_data_loader = DataLoader(dataset=test_set, batch_size=batch_size, pin_memory=False,
shuffle=shuffle)