OSError:无法打开文件(无法打开文件)
Posted
技术标签:
【中文标题】OSError:无法打开文件(无法打开文件)【英文标题】:OSError: Unable to open file (unable to open file) 【发布时间】: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())
并检查它是否是你假设的正确目录吗?
是的,我确实检查过了,它报告的目录与我假设的目录相同。
【参考方案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)
基本上路径不匹配会引发此错误
-
检查相对、绝对路径
检查您的程序期望的路径
【讨论】:
【参考方案5】:-
如果你运行 a.py 得到错误,但是你在 b.py 中加载了 model.h5
请将 model.h5 cp 到与 a.py 同级目录
将 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 文档。
【讨论】:
以上是关于OSError:无法打开文件(无法打开文件)的主要内容,如果未能解决你的问题,请参考以下文章
OSError:libmkl_intel_lp64.so.1:无法打开共享对象文件:没有这样的文件或目录
Python3 open() 函数-用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。
从终端运行 Xcode 无法打开 javascript 脚本(错误:仪器无法打开“TextWrangler 文本文档”格式的文件。”)
OSError: [Errno 19] 无法打开 uinput 设备:没有这样的设备
FileSystemException:无法打开文件,路径 = '/storage/0/emulated/myfolder/myfile.txt'(操作系统错误:没有这样的文件或目录,errno =