notes de publication CNTK v2.4

Principales caractéristiques de cette version

  • Déplacé vers CUDA9, cuDNN 7 et Visual Studio 2017.
  • Suppression de la prise en charge de Python 3.4.
  • Ajout de la prise en charge du GPU Volta et du FP16.
  • Meilleure prise en charge d’ONNX.
  • Amélioration de l’UC parf.
  • Plus d’OPs.

Ops

  • top_k opération : dans le transfert, il calcule les valeurs k supérieures (les plus grandes) et les index correspondants le long de l’axe spécifié. Dans le passage vers l’arrière, le dégradé est dispersé vers les éléments k supérieurs (un élément qui n’est pas dans le haut k obtient un dégradé zéro).
  • gather l’opération prend désormais en charge un argument d’axe
  • squeeze et expand_dims opérations pour supprimer et ajouter facilement des axes singleton
  • zeros_like et ones_like opérations. Dans de nombreuses situations, vous pouvez simplement vous appuyer sur CNTK diffuser correctement un simple 0 ou 1, mais parfois vous avez besoin du tensoriel réel.
  • depth_to_space: réorganise les éléments dans le capteur d’entrée de la dimension de profondeur en blocs spatiaux. L’utilisation classique de cette opération consiste à implémenter la convolution de sous-pixel pour certains modèles de super résolution d’images.
  • space_to_depth: réorganise les éléments dans le capteur d’entrée des dimensions spatiales à la dimension de profondeur. Il s’agit en grande partie de l’inverse de DepthToSpace.
  • sum opération : Créez une instance de fonction qui calcule la somme d’éléments des tenseurs d’entrée.
  • softsign opération : Créez une instance de fonction qui calcule l’signature réversible d’élément d’un tensor d’entrée.
  • asinh opération : Créez une instance de fonction qui calcule l’asinh d’élément d’un tensor d’entrée.
  • log_softmax opération : Créez une instance de fonction qui calcule les valeurs normalisées logsoftmax d’un tensor d’entrée.
  • hard_sigmoid opération : Créez une instance de fonction qui calcule les hard_sigmoid valeurs normalisées d’un tensor d’entrée.
  • element_and, , , element_not, element_orelement_xor opérations logiques basées sur des éléments
  • reduce_l1 opération : calcule la norme L1 de l’élément du tensor d’entrée le long des axes fournis.
  • reduce_l2 opération : calcule la norme L2 de l’élément du tensor d’entrée le long des axes fournis..
  • reduce_sum_square opération : calcule le carré somme de l’élément du tensor d’entrée le long des axes fournis.
  • image_scaler opération : Modification de l’image en mettant à l’échelle ses valeurs individuelles.

ONNX

  • Plusieurs améliorations ont été apportées à la prise en charge d’ONNX dans CNTK.
  • Mises à jour
    • Mise à jour de l’opération ONNX Reshape pour gérer InferredDimension.
    • Ajout producer_name et producer_version champs aux modèles ONNX.
    • Gestion du cas lorsque ni atrribute n’est auto_padpads spécifié dans l’op ONNX Conv .
  • Résolution des bogues
    • Correction d’un bogue dans la sérialisation des opérations ONNX Pooling
    • Correction de bogue pour créer ONNX InputVariable avec un seul axe de lot.
    • Correctifs de bogues et mises à jour de l’implémentation d’OP ONNX Transpose pour correspondre aux spécifications mises à jour.
    • Correctifs de bogues et mises à jour de l’implémentation d’ONNX Convet ConvTransposePooling d’opérations pour correspondre aux spécifications mises à jour.

Opérateurs

  • Convolution de groupe
    • Correction d’un bogue dans la convolution de groupe. La sortie de CNTK Convolution op change pour les groupes > 1. L’implémentation plus optimisée de la convolution de groupe est attendue dans la prochaine version.
    • Meilleure création de rapports d’erreurs pour la convolution de groupe dans Convolution la couche.

Convolution binaire halide

  • La build CNTK peut désormais utiliser des bibliothèques Halide facultatives pour générer Cntk.BinaryConvolution.so/dll une bibliothèque qui peut être utilisée avec le netopt module. La bibliothèque contient des opérateurs de convolution binaire optimisés qui s’exécutent mieux que les opérateurs binarisés binarisés de convolution. Pour activer Halide dans la build, téléchargez la version Halide et définissez HALIDE_PATH la varibale d’environnement avant de démarrer une build. Dans Linux, vous pouvez l’utiliser ./configure --with-halide[=directory] pour l’activer. Pour plus d’informations sur l’utilisation de cette fonctionnalité, reportez-vous à How_to_use_network_optimization.