J'ai des poids VGG-16 enregistrés au format h5. Je veux voir le nombre de couches dans le réseau. Comment puis-je faire cela?
J'ai essayé d'utiliser:
file = h5py.File(vgg16.h5)
après cela, j'ai vérifié file.attrs
mais après ce point je ne Je ne sais pas quelle commande utiliser pour trouver le nombre de couches dans le réseau.
3 Réponses :
Sans vos données ou votre code, il est difficile de fournir plus de détails. Pour démontrer les méthodes h5py pour accéder aux données h5, voici un exemple simple qui crée un fichier h5 avec 1 groupe avec 3 ensembles de données. Une fois le groupe et les ensembles de données créés, il y a une boucle pour imprimer le nom, la forme et le type de l'ensemble de données.
number of datasets in group: 3 for ds_1 : shape: (10, 10) dtype: float64 for ds_2 : shape: (10, 10) dtype: float64 for ds_3 : shape: (10, 10) dtype: float64
La sortie ressemble à ceci:
import h5py, numpy as np h5f=h5py.File('SO_54511719.h5','w') ds_data = np.random.random(100).reshape(10,10) group1 = h5f.create_group('group1') group1.create_dataset('ds_1', data=ds_data) group1.create_dataset('ds_2', data=ds_data) group1.create_dataset('ds_3', data=ds_data) print ('number of datasets in group:', len(group1)) for (dsname, dsvalue) in group1.items() : print ('for',dsname,':') print ('shape:',dsvalue.shape) print ('dtype:',dsvalue.dtype) h5f.close()
Si vous tapez ce code dans spyder fourni, vous avez installé la bibliothèque Keras. Vous obtiendrez toutes les couches dans h5.file
from keras.models import load_model classifier=load_model('my_model.h5') classifier.summary()
Si vous n'avez que des poids et non la structure du modèle, vous pouvez utiliser la méthode keys () pour obtenir le nom de tous les calques dans ce fichier de poids.
Par exemple: j'ai un fichier de poids: enregistré- weight.h5
Si je veux savoir quelles sont les couches présentes dans ce fichier de poids, vous pouvez faire ce qui suit:
import h5py file = h5py.File('saved-weight.h5') layer_names = file.keys() # output layer_names = <KeysViewHDF5 ['add', 'bn_3', 'bn_5', 'bn_7', 'concatenate', 'conv_1', 'conv_2', 'conv_3', 'dropout', 'fc_8', 'fc_9', 'gru_10', 'gru_10_back', 'gru_11', 'gru_11_back', 'input_1', 'input_3', 'input_4', 'labels', 'lambda', 'lambda_1', 'lambda_2', 'lambda_3', 'maxpool_3', 'maxpool_5', 'model', 'permute', 'reshape']>
Voici les calques présents dans le fichier de poids enregistrés
Je pense que c'est la bonne réponse pour le seul modèle enregistré de poids
Bien que nous puissions décrire la présentation générale du fichier (groupes, ensembles de données, attributs), nous ne pouvons pas décrire ce fichier spécifique. Cela dépend entièrement de la façon dont il a été écrit.
Vous n'avez pas une sorte de documentation?
Salut hpaulj, oui je veux juste savoir dans ces attributs puis-je voir le nombre de couches ou une option?
docs.h5py.org/en/stable/high/attr.html
Lorsque vous dites «nombre de couches», faites-vous référence au nombre d'ensembles de données ou à la taille et à la forme d'un ensemble de données? Pour obtenir des informations sur l'ensemble de données, utilisez
.shape
et.dtype
(comme numpy nomeclature). Si vous voulez le nombre d'ensembles de données dans un groupe, utilisez la fonctionlen ()
sur le groupe. Un moyen simple de visualiser la structure et le contenu des données du fichier h5 est HDFView de HDF Group .