benign_file=[] malignant_file=[] for root, dirs, files in os.walk("./lin", topdown=False): if 'label' not in root: for file in files: if file[-3:]=='tif': tmp = file.split('_') label_file = str(int(tmp[-1][0:4]) - 3*116).zfill(3)+'.tif' if 'benign' in root: label_file_abs = os.path.join(root.replace('benign', 'benign_label'),label_file) elif 'malignant' in root: label_file_abs = os.path.join(root.replace('malignant','malignant_label'), label_file) if os.path.isfile(label_file_abs): if 'benign' in root: benign_file.append((os.path. join(root, file), label_file_abs)) elif 'malignant' in root: malignant_file.append((os.path.join(root, file), label_file_abs)) print(malignant_file) print(benign_file)输出是个空列表怎么解决
时间: 2024-01-15 14:03:40 浏览: 149
首先,需要确认文件路径是否正确。可以在代码中添加一个 `print(root)` 的语句,确保程序遍历到了正确的文件夹。
其次,可以检查 label 文件夹是否存在,以及文件名是否正确。可以手动检查一下 `label_file_abs` 对应的文件是否存在。
最后,可以尝试使用绝对路径来代替相对路径,确保程序可以正确读取文件。可以使用 `os.path.abspath()` 函数来获取绝对路径。
相关问题
def load_file(path): data = pd.read_csv(path, sep=',') is_benign = data[' Label'] == 'BENIGN' flows_normal = data[is_benign] flows_abnormal_full = data[~is_benign] sizeDownSample = len(flows_normal) * mult if (len(flows_normal) * mult) < (len(flows_abnorm
al_full)):
flows_abnormal = flows_abnormal_full.sample(n=sizeDownSample)
else:
flows_abnormal = flows_abnormal_full
return pd.concat([flows_normal, flows_abnormal])
这段代码是用来从一个 csv 文件中读取数据,并且对数据进行处理,主要是把正常的数据和异常的数据按照一定比例进行采样,最终返回处理后的数据集。
具体来说,参数 path 是 csv 文件所在路径,mult 是采样倍数,即将正常流量的数量乘以 mult 作为采样后的异常流量数量。
代码首先用 pandas 库的 read_csv 函数读取 csv 文件,并且通过判断每条流量的标签是否为 BENIGN 来区分正常流量和异常流量。
然后根据采样倍数 mult 和正常流量数量计算采样后的异常流量数量 sizeDownSample。如果采样后的异常流量数量小于原始异常流量数量,则使用 sample 函数进行采样,否则直接使用全部异常流量。
最后使用 concat 函数将正常流量和异常流量合并成一个数据集并返回。
Traceback (most recent call last): File "/home/boyang/Beatrix/defenses/STRIP/STRIP_our.py", line 327, in <module> main() File "/home/boyang/Beatrix/defenses/STRIP/STRIP_our.py", line 278, in main list_entropy_trojan, list_entropy_benign = strip(opt, mode) File "/home/boyang/Beatrix/defenses/STRIP/STRIP_our.py", line 198, in strip state_dict = torch.load(opt.ckpt_path) File "/opt/anaconda3/envs/ndg/lib/python3.9/site-packages/torch/serialization.py", line 789, in load return _load(opened_zipfile, map_location, pickle_module, **pickle_load_args) File "/opt/anaconda3/envs/ndg/lib/python3.9/site-packages/torch/serialization.py", line 1131, in _load result = unpickler.load() File "/opt/anaconda3/envs/ndg/lib/python3.9/site-packages/torch/serialization.py", line 1101, in persistent_load load_tensor(dtype, nbytes, key, _maybe_decode_ascii(location)) File "/opt/anaconda3/envs/ndg/lib/python3.9/site-packages/torch/serialization.py", line 1083, in load_tensor wrap_storage=restore_location(storage, location), File "/opt/anaconda3/envs/ndg/lib/python3.9/site-packages/torch/serialization.py", line 215, in default_restore_location result = fn(storage, location) File "/opt/anaconda3/envs/ndg/lib/python3.9/site-packages/torch/serialization.py", line 187, in _cuda_deserialize return obj.cuda(device) File "/opt/anaconda3/envs/ndg/lib/python3.9/site-packages/torch/_utils.py", line 80, in _cuda untyped_storage = torch.UntypedStorage( RuntimeError: CUDA error: out of memory CUDA kernel errors might be asynchronously reported at some other API call,so the stacktrace below might be incorrect. For debugging consider passing CUDA_LAUNCH_BLOCKING=1.
这是一个Python的异常追踪(Traceback),它显示了在执行程序时出现的错误。根据给出的信息,看起来出现了一个关于CUDA内存不足的错误。
在这段代码中,`torch.load(opt.ckpt_path)` 用于加载模型的检查点文件。然而,根据错误信息显示,出现了一个CUDA错误,并且提示是内存不足。
要解决这个问题,你可以尝试以下几个步骤:
1. 检查你的CUDA设备是否有足够的内存来加载模型。你可以使用 `torch.cuda.get_device_properties(device_id)` 函数来获取CUDA设备的属性,包括内存大小。
2. 如果你的CUDA设备内存不足,可以尝试减少模型的大小,或者使用更小的批量大小。
3. 你还可以尝试使用 `torch.load(opt.ckpt_path, map_location='cpu')` 来将模型加载到CPU上,而不是CUDA设备上。这可能会减少对CUDA内存的需求。
4. 如果你的模型很大,并且无法适应你的CUDA设备内存,那么你可能需要考虑使用更大的显卡或者分布式训练等策略。
另外,错误信息中还提到了一个提示:`CUDA_LAUNCH_BLOCKING=1`。你可以尝试设置这个环境变量来启用CUDA错误的同步报告,以获取更准确的错误信息。
如果以上步骤都没有解决问题,那么可能需要更详细的错误信息或者代码的上下文来进行进一步的排查。
阅读全文
相关推荐

















