问题
My keras model is saved in google storage with model.save(model_name)
I cannot load the model on pydatalab. When I save the model on my local machine, I can just open it with load_model(filepath). Also I did import keras.backend as K, based on NameError when opening Keras model that uses Tensorflow Backend
I have tried the following:
model = load_model(tf.gfile.Open(model_file))
Error: TypeError: expected str, bytes or os.PathLike object, not GFile
load_model('gs://mybucket/model.h5')
Error: IOError: Unable to open file (unable to open file: name = 'gs://mybucket/model.h5', errno = 2, error message = 'No such file or directory', flags = 0, o_flags = 0)
with file_io.FileIO(model_file, 'r') as f: modl = load_model(f)
error: TypeError: expected str, bytes or os.PathLike object, not FileIO
回答1:
Load the file from gs storage
from tensorflow.python.lib.io import file_io
model_file = file_io.FileIO('gs://mybucket/model.h5', mode='rb')
Save a temporary copy of the model locally
temp_model_location = './temp_model.h5'
temp_model_file = open(temp_model_location, 'wb')
temp_model_file.write(model_file.read())
temp_model_file.close()
model_file.close()
Load model saved locally
model = load_model(temp_model_location)
回答2:
I don't think Keras supports the TensorFlow file system which in turn knows how to read from GCS.
You could try downloading from GCS to a local path, and then reading from that to load the model.
回答3:
The following function works for retraining an already trained keras model (with new data) on gcloud machine learning platform (Thanks to Tíarnán McGrath).
def load_models(model_file):
model = conv2d_model() #the architecture of my model, not compiled yet
file_stream = file_io.FileIO(model_file, mode='r')
temp_model_location = './temp_model.h5'
temp_model_file = open(temp_model_location, 'wb')
temp_model_file.write(file_stream.read())
temp_model_file.close()
file_stream.close()
model.load_weights(temp_model_location)
return model
For some reason, load_model
from keras.models
does not work for me anymore, so I have to build the model each time.
来源:https://stackoverflow.com/questions/48392457/loading-saved-keras-model-from-gs-to-pydatalab