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

时间:2017-09-10 13:28:32

标签: python keras hdf5 h5py

我在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:无法创建文件(无法打开文件:name =' 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&#39 ;,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&#39 ;模式='一个'编码=' CP1252'> 2L128 ADAM-0.001〜{划时代:02D} - {损失:.3f} .hdf5"

3 个答案:

答案 0 :(得分:4)

当我从文件路径中删除str(f)时,它有效。 f是一个整数,我不知道它导致错误的原因,但是从字符串中删除它解决了我的问题。

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

答案 1 :(得分:0)

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

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

我通过手动创建文件夹saved_models

解决了该问题

e作为整数不会对我造成任何问题。

答案 2 :(得分:0)

在远程机器上使用张量流时,我也遇到类似的问题。

我可能“无权修改文件”的原因。

我通过使用“ ../model.h5”之类的保存路径来解决此问题,该文件是您拥有权限的文件夹。

这可能对某人有帮助。