文档首页> AI开发平台ModelArts> 故障排除> 训练作业> OBS操作相关故障> 读取文件报错,如何正确读取文件
更新时间:2024-04-11 GMT+08:00

读取文件报错,如何正确读取文件

问题现象

  • 创建训练作业如何读取“json”“npy”文件。
  • 训练作业如何使用cv2库读取文件。
  • 如何在MXNet环境下使用torch包。
  • 训练作业读取文件,出现如下报错:
    NotFoundError (see above for traceback): Unsucessful TensorSliceReader constructor: Failed to find any matching files for xxx://xxx

原因分析

在ModelArts中,用户的数据都是存放在OBS桶中,而训练作业运行在容器中,无法通过访问本地路径的方式访问OBS桶中的文件。

处理方法

读取文件报错,您可以使用Moxing将数据拷贝至容器中,再直接访问容器中的数据。请参见步骤1

您也可以根据不同的文件类型,进行读取。请参见读取“json”文件读取“npy”文件使用cv2库读取文件在MXNet环境下使用torch包

  1. 读取文件报错,您可以使用Moxing将数据拷贝至容器中,再直接访问容器中的数据。具体方式如下:
    import moxing as mox
    mox.file.make_dirs('/cache/data_url')
    mox.file.copy_parallel('obs://bucket-name/data_url', '/cache/data_url')
  2. 读取“json”文件,请您在代码中尝试如下方法:
    json.loads(mox.file.read(json_path, binary=True))
  3. 使用“numpy.load”读取“npy”文件,请您在代码中尝试如下方法:
    • 使用MoXing API读取OBS中的文件
      np.load(mox.file.read(_SAMPLE_PATHS['rgb'], binary=True))
    • 使用MoXing的file模块对OBS文件进行读写
      with mox.file.File(_SAMPLE_PATHS['rgb'], 'rb') as f:
      np.load(f)
  4. 使用cv2库读取文件,请您尝试如下方法:
    cv2.imdecode(np.fromstring(mox.file.read(img_path), np.uint8), 1)
  5. 在MXNet环境下使用torch包,请您尝试如下方法先进行导包:
    import os
    os.sysytem('pip install torch')
    import torch