Numpy常见bug
错误1
pid_list = np.load(pid_fname)
ValueError: Cannot load file containing pickled data when allow_pickle=False
解决方法
pid_list = np.load(pid_fname, allow_pickle=True)# 添加 allow_pickle=True
错误2
_pickle.UnpicklingError: Failed to interpret file 'partition\\CASIA-B_73_False.npy' as a pickle
解决方法
如果是文件损坏,不是有效的NumPy格式
验证数据预处理逻辑
步骤说明:
数据划分逻辑错误可能导致生成无效的 pid_list,例如:
- 混合了不同数据类型的元素(如整数和字符串)。
- 子列表长度不一致(如 [[1,2,3], [4,5]])。
操作:
- 打印 pid_list 的结构:
# 在生成 pid_list 后添加调试代码
print("pid_list 样本:", pid_list[:2]) # 打印前两个元素
print("子元素长度:", [len(item) for item in pid_list])
- 标准化数据格式:
如果数据长度不一致,需统一填充或截断:
# 示例:填充短列表为统一长度
max_len = max(len(item) for item in pid_list)
padded_list = [item + [0] * (max_len - len(item)) for item in pid_list]
pid_list = padded_list
如果数据类型不一致,转换为统一类型:
pid_list = [list(map(int, item)) for item in pid_list]