OSError 无法创建文件 - 参数无效

问题描述 投票:0回答:4

我在 Tensorflow 之上使用 Python 和 Keras 来训练我的神经网络。 当我从 Ubuntu 16.04 切换到 Windows 10 时,当我运行以下命令时,我的模型无法再保存:

filepath = "checkpoint-"+str(f)+model_type+"-"+optimizer_name+"-{epoch:02d}-{loss:.3f}.hdf5"
checkpoint = ModelCheckpoint(filepath, monitor='loss', verbose=1, save_best_only=True, mode='min')
callbacks_list = [checkpoint]

以及稍后:

model.fit(X, y,
      batch_size=128,
      epochs=1,
      shuffle=False,
      callbacks=callbacks_list)

我收到此错误:

OSError:无法创建文件(无法打开文件:名称 = 'checkpoint-<_io.textiowrapper name='data/swing-projects100-raw/many-chunks/log-gamma-f3.txt' mode='a' encoding='cp1252'>2l128-adam-0.001-{epoch:02d}-{loss:.3f}.h5',errno = 22,错误消息 = '无效参数',flags = 13,o_flags = 302)

我通过 conda 安装了 Keras 2.0.8 和 h5py 2.7.0。

我试过了

filepath = "checkpoint-"+str(f)+model_type+"-"+optimizer_name+"-{epoch:02d}-{loss:.3f}.hdf5"

with open(filepath, "w") as f:
  f.write("Test.")

并得到类似的错误:

OSError:[Errno 22]无效参数:“checkpoint-<_io.TextIOWrapper name='data/swing-projects100-raw/many-chunks/log-gamma-f3.txt' mode='a' encoding='cp1252'>2L128-Adam-0.001-{epoch:02d}-{loss:.3f}.hdf5”

python keras hdf5 h5py
4个回答
4
投票

当我从文件路径中删除

str(f)
时,它起作用了。
f
是一个整数,我不知道为什么它会导致错误,但从字符串中删除它解决了我的问题。

如果您确切知道原因,请告诉我。


1
投票

我在远程机器上使用tensorflow时也遇到类似的问题。

我的原因可能是“没有权限修改文件”。

我通过使用“../model.h5”这样的保存路径——你有权限的文件夹来解决这个问题。

这可能对某人有帮助。


0
投票

我对此代码也有类似的问题:

agent.save("./saved_models/weights_episode_{}.h5".format(e))

我通过手动创建文件夹解决了这个问题

saved_models

e
作为一个整数在我的例子中并没有造成任何问题。


0
投票

就我而言,这是由于我使用了 Vscode。当我切换到 PyCharm 时,一切都运行良好。

© www.soinside.com 2019 - 2024. All rights reserved.