web-dev-qa-db-fra.com

google colaboratory, téléchargement de poids (exportation de modèles sauvegardés)

J'ai créé un modèle à l'aide de la bibliothèque Keras et l'ai enregistré au format .json et ses poids avec l'extension .h5. Comment puis-je le télécharger sur ma machine locale?

pour enregistrer le modèle, j'ai suivi cette link

7
Nishank Lakkakula

Cela a fonctionné pour moi !! Utilisez l'API PyDrive

!pip install -U -q PyDrive
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
from google.colab import auth
from oauth2client.client import GoogleCredentials

# 1. Authenticate and create the PyDrive client.
auth.authenticate_user()
gauth = GoogleAuth()
gauth.credentials = GoogleCredentials.get_application_default()
drive = GoogleDrive(gauth)

# 2. Save Keras Model or weights on google drive

# create on Colab directory
model.save('model.h5')    
model_file = drive.CreateFile({'title' : 'model.h5'})
model_file.SetContentFile('model.h5')
model_file.Upload()

# download to google drive
drive.CreateFile({'id': model_file.get('id')})

Même chose pour les poids

model.save_weights('model_weights.h5')
weights_file = drive.CreateFile({'title' : 'model_weights.h5'})
weights_file.SetContentFile('model_weights.h5')
weights_file.Upload()
drive.CreateFile({'id': weights_file.get('id')})

Maintenant, vérifiez votre lecteur Google.

Lors de la prochaine exécution, essayez de recharger les poids

# 3. reload weights from google drive into the model

# use (get shareable link) to get file id
last_weight_file = drive.CreateFile({'id': '1sj...'}) 
last_weight_file.GetContentFile('last_weights.mat')
model.load_weights('last_weights.mat')
9
Samer Ayoub

Voici une solution qui a fonctionné pour moi:

Configuration de l'authentification b/w Google Colab et votre lecteur:

Pas:

Collez le code comme ci-dessous

-Ce processus générera deux URL pour l'authentification à compléter, où vous devrez copier les jetons et les coller dans la barre fournie

!apt-get install -y -qq software-properties-common python-software-properties module-init-tools
!add-apt-repository -y ppa:alessandro-strada/ppa 2>&1 > /dev/null
!apt-get update -qq 2>&1 > /dev/null
!apt-get -y install -qq google-drive-ocamlfuse Fuse
from google.colab import auth
auth.authenticate_user()
from oauth2client.client import GoogleCredentials
creds = GoogleCredentials.get_application_default()
import getpass
!google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret} < /dev/null 2>&1 | grep URL
vcode = getpass.getpass()
!echo {vcode} | google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret}

Une fois cette authentification effectuée, utilisez les codes suivants pour établir la connexion:

!mkdir -p drive
!google-drive-ocamlfuse drive

Maintenant, pour voir la liste des fichiers dans votre Google Drive:

!ls drive

Pour enregistrer la sortie du modèle Keras sur Drive, le processus est identique à celui du stockage sur le lecteur local:

-Exécuter le modèle Keras comme d'habitude 

Une fois le modèle formé, indiquez que vous souhaitez stocker vos sorties de modèle (.h5 et json) dans le dossier app de votre Google Drive:

model_json = model.to_json()
with open("drive/app/model.json", "w") as json_file:
    json_file.write(model_json)
# serialize weights to HDF5
model.save_weights("drive/app/model_weights.h5")
print("Saved model to drive")

Vous trouverez les fichiers dans les dossiers respectifs de Google Drive, à partir desquels vous pouvez télécharger, comme indiqué ci-dessous:

 enter image description here

7
Anurag H

Essaye ça

from google.colab import files
files.download("model.json")
4
Korakot Chaovavanich

Pour télécharger le modèle sur le système local, le code suivant fonctionnerait - Téléchargement du fichier json:

model_json = model.to_json()
with open("model1.json","w") as json_file:
     json_file.write(model_jason)

files.download("model1.json")

Télécharger des poids:

model.save('weights.h5')
files.download('weights.h5')
1
Keya

files.download ne vous permet pas de télécharger directement des fichiers volumineux. Une solution de contournement consiste à enregistrer vos poids sur Google drive, en utilisant l'extrait de code ci-dessous. Il suffit de changer le filename.txt pour votre fichier weights.h5

# Install the PyDrive wrapper & import libraries.
# This only needs to be done once in a notebook.
!pip install -U -q PyDrive
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
from google.colab import auth
from oauth2client.client import GoogleCredentials

# Authenticate and create the PyDrive client.
# This only needs to be done once in a notebook.
auth.authenticate_user()
gauth = GoogleAuth()
gauth.credentials = GoogleCredentials.get_application_default()
drive = GoogleDrive(gauth)

# Create & upload a file.
uploaded = drive.CreateFile({'title': 'filename.csv'})
uploaded.SetContentFile('filename.csv')
uploaded.Upload()
print('Uploaded file with ID {}'.format(uploaded.get('id')))
1
LeandroHumb

save_path = saver.save (sess, "data/dm.ckpt") "session" est obsolète. 

0
Piyush Aggarwal

Vous pouvez exécuter ce qui suit après la formation.

saver = tf.train.Saver()
save_path = saver.save(session, "data/dm.ckpt")
print('done saving at',save_path)

Ensuite, vérifiez l'emplacement où les fichiers ckpt ont été enregistrés.

import os
print( os.getcwd() )
print( os.listdir('data') )

Enfin, téléchargez les fichiers avec poids!

from google.colab import files
files.download( "data/dm.ckpt.meta" ) 
0
Nazmus Sakib