【问题标题】:OSError: Unable to open file (unable to open file)OSError:无法打开文件(无法打开文件)
【发布时间】:2019-01-06 16:16:36
【问题描述】:

我正在尝试为我的作业加载一个名为“tr_model.h5”的预训练模型,但出现以下错误:

Traceback (most recent call last):
 File "Trigger_Project.py", line 84, in <module>
model = load_model(filename)
 File "Trigger_Project.py", line 84, in <module>
model = load_model(filename)
 File "/home/neeraj/anaconda3/lib/python3.6/site-packages/h5py/_hl/files.py", line 99, in make_fid
fid = h5f.open(name, flags, fapl=fapl)
File "h5py/_objects.pyx", line 54, in h5py._objects.with_phil.wrapper

文件“h5py/_objects.pyx”,第 55 行,在 h5py._objects.with_phil.wrapper 中

File "h5py/h5f.pyx", line 78, in h5py.h5f.open
OSError: Unable to open file (unable to open file: name = 'tr_model.h5', errno = 2, error message = 'No such file or directory', flags = 0, o_flags = 0)

我已确定该文件存在。我不知道为什么它显示操作系统错误。我正在使用 linux 18.04,并且所有必需的库都已升级。任何帮助深表感谢。

【问题讨论】:

  • 会不会是相对路径的问题?
  • 不,在同一目录下
  • 是否有无法通过终端打开的问题?
  • 你能添加一个print(os.getcwd()) 并检查它是否是你假设的正确目录吗?
  • 是的,我确实检查过了,它报告的目录与我假设的目录相同。

标签: python-3.x hdf5


【解决方案1】:

我遇到了与我在问题中发布的相同的问题:

h5py.File(path) doesn't recognize folder path

我最初的推理是 h5py.File(path) 不处理标准子文件夹路径作为它的参数,例如load_model("neunet.h5") 没有问题,但load_model("subfolder/neunet.h5") 会给出同样的错误。

简而言之,我的解决方案是简单地将任何 .h5 文件放入我的 jupyter notebook 的工作主文件夹中,这是您创建 .ipynb 文件的地方。您可以在 jupyter notebook 中使用 print(os.getcwd()) 来查看您当前的工作目录在哪里。

【讨论】:

    【解决方案2】:

    如果您正在使用 colab 和 google drive,请使用以下方式将驱动器安装到 colab,

    # Load the Drive helper and mount
    from google.colab import drive
    
    # This will prompt for authorization.
    drive.mount('/content/drive')
    

    【讨论】:

      【解决方案3】:

      我通过指定绝对路径解决了这个问题。获取工作文件夹的绝对路径,然后将路径附加到工作目录中的文件。就我而言,该文件位于名为 datasets 的目录中,因此我尝试了以下代码

      file_name = os.path.dirname(__file__) +'\\datasets\\test_catvnoncat.h5'
      test_dataset = h5py.File(file_name, "r")
      

      【讨论】:

        【解决方案4】:

        我在使用 docker 镜像时遇到了这个错误。由于自定义 docker 的路径与根路径不同,我得到了同样的错误。

        OSError: 无法打开文件(无法打开文件:name = '',errno = 2,错误消息 = 'No such file or directory',flags = 0,o_flags = 0)

        基本上路径不匹配会引发此错误

        1. 检查相对、绝对路径
        2. 检查您的程序期望的路径

        【讨论】:

          【解决方案5】:
          1. 如果你运行 a.py 得到错误,但是你在 b.py 中加载了 model.h5
          2. 请将 model.h5 cp 到与 a.py 同级目录
          3. b.py 的 load('xx/model.h5') 编辑为 load('model.h5')

          它对我有用。

          【讨论】:

            【解决方案6】:

            在通过设置“%cd /gdrive”安装驱动器后以及编写“model.save('/gdrive/mnist.h5')”时,我在 colab 中遇到了同样的问题。然后我意识到可以创建文件并将其保存在“/gdrive/My Drive/”中,而不仅仅是“/gdrive”。因此,检查您是否可以在指定的路径中创建文件很重要。

            所以,model.save('/gdrive/My Drive/mnist.h5') 对我有用。

            【讨论】:

              【解决方案7】:

              我在使用设置训练检查点的路径时遇到了同样的问题 tensorflow.keras.callbacks.ModelCheckpoint 我已经设置了路径:

              path = os.path.join(subdir,filename)
              

              使用 f 字符串 解决了这个问题:

              path = f'{subdir}/{filename}'
              

              所以我还要检查你是如何导入load_model的, 尝试tensorflow.keras.models 而不是仅keras.models

              【讨论】:

                【解决方案8】:

                我的loss 始终等于inf,因此模型文件从未在回调时写入磁盘,因为它只是为loss 的最佳情况而编写的。

                当我从数据集中消除所有 NaN 值时,一切顺利,模型出现在文件系统上。

                在回调中启用详细程度有助于诊断此问题。

                有关详细信息,请参阅有关回调的官方 Keras 文档。

                【讨论】:

                  猜你喜欢
                  • 2022-01-17
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2019-10-09
                  • 2018-11-30
                  • 2015-10-16
                  相关资源
                  最近更新 更多