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 ope
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)
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.
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.
OS level command can also be used just in case someone is using Colab
To mound your google drive use
from google.colab import drive
drive.mount('/content/drive', force_remount=True)
Code to mount GCS
from google.colab import auth
auth.authenticate_user()
project_id = 'thirumalai_bucket' #your bucket here
!gcloud config set project {project_id}
!gsutil ls
!gsutil -m cp
in your case:
!gsutil -m cp gs://mybucket/model.h5 /content/drive/My\ Drive/models/
now the file model.h5 available in drive /content/drive/My Drive/models/ move to your models directory using:
!cd /content/drive/My\ Drive/models/
load_model('model.h5')
Hope this helps!