2
votes

Comment trouver le nombre de couches à partir du fichier h5 enregistré du modèle pré-entraîné?

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.


5 commentaires

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 fonction len () sur le groupe. Un moyen simple de visualiser la structure et le contenu des données du fichier h5 est HDFView de HDF Group .


3 Réponses :


0
votes

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()


0 commentaires

0
votes

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()


0 commentaires

1
votes

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


1 commentaires

Je pense que c'est la bonne réponse pour le seul modèle enregistré de poids