Python 不能';使用pytorch枚举时出现关闭文件错误

Python 不能';使用pytorch枚举时出现关闭文件错误,python,pytorch,macos-catalina,enumerate,dataloader,Python,Pytorch,Macos Catalina,Enumerate,Dataloader,调用pytorch枚举方法时,我似乎遇到了一个错误。通过谷歌搜索错误信息,我的操作系统macOS catalina似乎有问题。是否有我找不到的解决方案和/或是否有使用enumerate的替代方案?(我正在运行其他人编写的脚本,不熟悉pytorch中的数据加载程序,也找不到有关枚举方法的更多信息)。以下是完整的错误消息: libc++abi.dylib: terminating with uncaught exception of type std::runtime_error: Couldn't

调用pytorch枚举方法时,我似乎遇到了一个错误。通过谷歌搜索错误信息,我的操作系统macOS catalina似乎有问题。是否有我找不到的解决方案和/或是否有使用enumerate的替代方案?(我正在运行其他人编写的脚本,不熟悉pytorch中的数据加载程序,也找不到有关枚举方法的更多信息)。以下是完整的错误消息:

libc++abi.dylib: terminating with uncaught exception of type std::runtime_error: Couldn't close file
Traceback (most recent call last):
  File "background_analysis.py", line 313, in <module>
    validation_classifier(fit_tree, "../events/" + data + "/dataframes/bbbb_SR.h5", data_name=data, method_name=method, region='SR', epochs=15)
  File "/Users/Trevor/Desktop/Research/toy4b/python/validation.py", line 18, in validation_classifier
    model.runEpoch(print_all_epochs=True, fit_validation=True, data_name=data_name, method_name=method_name, region=region)
  File "fvt_scripts/model_train.py", line 1270, in runEpoch
    self.validate()
  File "fvt_scripts/model_train.py", line 1132, in validate
    self.evaluate(self.validation, doROC)
  File "fvt_scripts/model_train.py", line 1111, in evaluate
    for i, (J, O, D, Q, y, w) in enumerate(results.evalLoader):
  File "/Users/Trevor/Desktop/Research/myenv/lib/python3.7/site-packages/torch/utils/data/dataloader.py", line 279, in __iter__
    return _MultiProcessingDataLoaderIter(self)
  File "/Users/Trevor/Desktop/Research/myenv/lib/python3.7/site-packages/torch/utils/data/dataloader.py", line 746, in __init__
    self._try_put_index()
  File "/Users/Trevor/Desktop/Research/myenv/lib/python3.7/site-packages/torch/utils/data/dataloader.py", line 861, in _try_put_index
    index = self._next_index()
  File "/Users/Trevor/Desktop/Research/myenv/lib/python3.7/site-packages/torch/utils/data/dataloader.py", line 339, in _next_index
    return next(self._sampler_iter)  # may raise StopIteration
  File "/Users/Trevor/Desktop/Research/myenv/lib/python3.7/site-packages/torch/utils/data/sampler.py", line 202, in __iter__
    if len(batch) == self.batch_size:
  File "/Users/Trevor/Desktop/Research/myenv/lib/python3.7/site-packages/torch/utils/data/_utils/signal_handling.py", line 66, in handler
    _error_if_any_worker_fails()
RuntimeError: DataLoader worker (pid 6750) is killed by signal: Unknown signal: 0. 
libc++abi.dylib: terminating with uncaught exception of type std::runtime_error: Couldn't close file
Abort trap: 6
libc++abi.dylib:以std::runtime类型的未捕获异常终止\u错误:无法关闭文件
回溯(最近一次呼叫最后一次):
文件“background_analysis.py”,第313行,在
验证分类器(拟合树,“../events/“+data+”/dataframes/bbbb\u SR.h5”,数据名称=数据,方法名称=方法,区域='SR',年代=15)
文件“/Users/Trevor/Desktop/Research/toy4b/python/validation.py”,第18行,在validation\u分类器中
model.runEpoch(print\u all\u epoch=True,fit\u validation=True,data\u name=data\u name,method\u name=method\u name,region=region)
文件“fvt_scripts/model_train.py”,第1270行,在runEpoch中
self.validate()
文件“fvt_脚本/model_train.py”,第1132行,验证
自我评估(自我验证,doROC)
文件“fvt_脚本/model_train.py”,第1111行,在评估中
对于枚举(results.evalLoader)中的i,(J,O,D,Q,y,w):
文件“/Users/Trevor/Desktop/Research/myenv/lib/python3.7/site packages/torch/utils/data/dataloader.py”,第279行,在__
return\u多处理数据装入器(self)
文件“/Users/Trevor/Desktop/Research/myenv/lib/python3.7/site packages/torch/utils/data/dataloader.py”,第746行,在__
self.\u try\u put\u index()
文件“/Users/Trevor/Desktop/Research/myenv/lib/python3.7/site packages/torch/utils/data/dataloader.py”,第861行,索引
index=self.\u next\u index()
文件“/Users/Trevor/Desktop/Research/myenv/lib/python3.7/site packages/torch/utils/data/dataloader.py”,第339行,在下一个索引中
返回下一个(自我采样器)#可能会引发停止迭代
文件“/Users/Trevor/Desktop/Research/myenv/lib/python3.7/site packages/torch/utils/data/sampler.py”,第202行,在__
如果len(批次)=自身批次大小:
文件“/Users/Trevor/Desktop/Research/myenv/lib/python3.7/site packages/torch/utils/data/_utils/signal_handling.py”,handler中第66行
_错误\u如果任何\u工作者\u失败()
运行时错误:DataLoader worker(pid 6750)被信号:未知信号:0终止。
libc++abi.dylib:以std::runtime类型的未捕获异常终止。\u错误:无法关闭文件
中止陷阱:6

我发现有人正在使用该文件,可能导致无法关闭文件的问题。我的代码是pytorch示例代码,在matplotlib打开图片后训练resnet18,这是我注释掉显示部分的代码,错误消失了:

def imshow(inp, title=None):
    inp = inp.numpy().transpose((1, 2, 0))
    mean = np.array([0.485, 0.456, 0.406])
    std = np.array([0.229, 0.224, 0.225])
    inp = std * inp + mean
    inp = np.clip(inp, 0, 1)

    plt.imshow(inp)
    if title is not None:
        plt.title(title)
    plt.pause(0.001)  # pause a bit so that plots are updated


#inputs, classes = next(iter(dataloaders['train']))
# Make a grid from batch
#out = torchvision.utils.make_grid(inputs)
#imshow(out, title=[class_names[x] for x in classes]) #stop showing the pic

它与
DataLoader
num\u workers
参数设置为
0
一起工作吗?不,我尝试了这个,但似乎没有任何帮助。这种情况下有什么错误?完全一样