Je voudrais accéder à la taille des couches de toutes les couches dans un modèle Keras Sequential
. Mon code:
model = Sequential()
model.add(Conv2D(filters=32,
kernel_size=(3,3),
input_shape=(64,64,3)
))
model.add(MaxPooling2D(pool_size=(3,3), strides=(2,2)))
Ensuite, je voudrais que du code comme celui-ci fonctionne
for layer in model.layers:
print(layer.get_shape())
.. mais ce n'est pas le cas. J'obtiens l'erreur: AttributeError: 'Conv2D' object has no attribute 'get_shape'
Selon le document officiel pour Keras Layer , on peut accéder à la forme de sortie/entrée de la couche via layer.output_shape
ou layer.input_shape
.
from keras.models import Sequential
from keras.layers import Conv2D, MaxPool2D
model = Sequential(layers=[
Conv2D(32, (3, 3), input_shape=(64, 64, 3)),
MaxPool2D(pool_size=(3, 3), strides=(2, 2))
])
for layer in model.layers:
print(layer.output_shape)
# Output
# (None, 62, 62, 32)
# (None, 30, 30, 32)
Si vous souhaitez que la sortie soit imprimée de manière élégante:
model.summary()
Si vous voulez les tailles sous une forme accessible
for layer in model.layers:
print(layer.get_output_at(0).get_shape().as_list())
Il existe probablement de meilleures façons d'accéder aux formes que cela. Merci à Daniel pour l'inspiration.
Utilisez simplement model.summary()
, et il imprimera tous les calques avec leurs formes de sortie.
Si vous en avez besoin sous forme de tableaux, de tuples ou etc., vous pouvez essayer:
for l in model.layers:
print (l.output_shape)
Il viendra comme (Aucun, 62, 62, 32) pour la première couche. Le None
est lié à la batch_size et sera défini lors de la formation ou de la prévision.