Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
CNTK fournit un moyen simple de visualiser le graphique de calcul sous-jacent d’un modèle à l’aide de Graphviz, un logiciel de visualisation de graphique open source.
Pour illustrer un cas d’usage, commençons par créer un réseau convolutionnel simple à l’aide de la bibliothèque CNTK Layers.
import cntk as C
def create_model(x, num_classes):
with C.layers.default_options(init=C.glorot_uniform(), activation=C.relu):
model = C.layers.Sequential([
C.layers.For(range(3), lambda i: [
C.layers.Convolution((5,5), [32,32,64][i], pad=True, name=['conv1', 'conv2', 'conv3'][i]),
C.layers.MaxPooling((3,3), strides=(2,2), name=['pool1', 'pool2', 'pool3'][i])
]),
C.layers.Dense(64, name='fc1'),
C.layers.Dense(num_classes, activation=None, name='classify')
])
return model(x)
Maintenant, en supposant que nous effectuons l’entraînement sur le jeu de données CIFAR-10, qui se compose de 32 images x 32 dans 10 classes, nous pouvons affecter la forme d’entrée correspondantement. Reportez-vous au didacticiel CNTK 201A pour obtenir des instructions sur le téléchargement et la préparation du jeu de données CIFAR-10 à utiliser dans CNTK.
input_var = C.input_variable((3,32,32))
z = create_model(input_var)
Pour obtenir la description sous-jacente du graphe de calcul, CNTK fournit une plot fonction dans le cntk.logging.graph module.
La plot(root, filename=None) fonction retourne une description réseau du graphique commençant par le root nœud fourni. En outre, si filename elle est spécifiée, la méthode génère un fichier DOT, PNG, PDF ou SVG (correspondant au suffixe de nom de fichier).
Pour générer la sortie DOT, vous devez installer pydot-ng (pip install pydot_ng). Et si vous souhaitez une sortie PNG, PDF ou SVG, vous aurez besoin de Graphviz en plus pydot-ngde .
Une fois que vous avez installé Graphviz, vérifiez que les fichiers binaires Graphviz se trouvent dans votre variable d’environnement PATH.
import pydot_ng
graph_description = C.logging.graph.plot(z, "graph.png")
print(graph_description)
Convolution(Parameter5302, Parameter5303, Input5301) -> Block6011_Output_0;
MaxPooling(Block6011_Output_0) -> Block6023_Output_0;
Convolution(Parameter5332, Parameter5333, Block6023_Output_0) -> Block6039_Output_0;
MaxPooling(Block6039_Output_0) -> Block6051_Output_0;
Convolution(Parameter5362, Parameter5363, Block6051_Output_0) -> Block6067_Output_0;
MaxPooling(Block6067_Output_0) -> Block6079_Output_0;
Dense(Parameter5710, Parameter5711, Block6079_Output_0) -> Block6095_Output_0;
Dense(Parameter5730, Parameter5731, Block6095_Output_0) -> Block6110_Output_0;
Si vous utilisez un Jupyter Notebook, vous pouvez afficher la sortie de visualisation de graphique inline :
from IPython.display import Image
display(Image(filename="graph.png"))

Pour obtenir un exemple plus détaillé de visualisation à l’aide logging.graph.plotdu manuel de débogage, reportez-vous au guide pratique pour déboguer .