2017-09-10 4 views
1

J'utilise Python et Keras au dessus de Tensorflow pour former mes réseaux de neurones. Lorsque je suis passé de Ubuntu 16.04 à Windows 10, mon modèle ne pouvait plus être sauvé quand je lance ce qui suit:OSError impossible de créer un fichier - argument non valide

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] 

et plus tard:

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

Je reçois cette erreur:

OSError: Unable to create file (Unable to open file: 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', errno = 22, error message = 'invalid argument', flags = 13, o_flags = 302)

J'ai Keras 2.0.8 et h5py 2.7.0 installé par conda.

J'ai essayé

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

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

et a obtenu une erreur semblable:

OSError: [Errno 22] Invalid argument: "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"

+0

Je suggère d'essayer d'enregistrer n'importe quel fichier texte simple avec ce chemin de fichier: f = open (filepath, 'w') – maz

+0

@maz S'il vous plaît jeter un oeil à ma question éditée. – AIpeter

+0

https://stackoverflow.com/questions/25584124/oserror-errno-22-invalid-argument-when-use-open-in-python suggère que 'filepath' est un nom de fichier non valide. Si vous souhaitez obtenir de l'aide pour déterminer comment 'filepath' est un nom de fichier valide, ajoutez la valeur de' filepath' qui provoque l'erreur à la question. –

Répondre

0

Lorsque j'ai enlevé str(f) du filepath, il a travaillé. f est un nombre entier et je ne sais pas pourquoi il a causé l'erreur, mais le retirer de la chaîne a résolu mon problème. Faites-moi savoir si vous savez exactement pourquoi.

+1

simple, f n'est pas un entier, mais un textiowrapper. –

+0

@MatiasValdenegro Voulez-vous dire 'str (f)' est un textiowrapper? A cause du 'str()' ou pourquoi f = 0' devrait-il être un textiowrapper? – AIpeter