Заметки о выпуске CNTK версии 2.4

Главное в этом выпуске

  • Перемещен в CUDA9, cuDNN 7 и Visual Studio 2017.
  • Удалена поддержка Python версии 3.4.
  • Добавлена поддержка GPU Volta и FP16.
  • Улучшенная поддержка ONNX.
  • Улучшение производительности ЦП.
  • Дополнительные ip-адреса.

Ops

  • top_k операция: на переднем проходе он вычисляет верхние (наибольшие) k значения и соответствующие индексы вдоль указанной оси. В обратном проходе градиент разбросан до элементов верхнего k (элемент, не в верхнем k, получает нулевой градиент).
  • gather Операция теперь поддерживает аргумент оси
  • squeeze и expand_dims операции для простого удаления и добавления одноэлементных осей
  • zeros_like и ones_like операции. Во многих ситуациях вы можете просто полагаться на CNTK правильно транслировать простой 0 или 1, но иногда вам нужен фактический тензор.
  • depth_to_space: переупорядочение элементов во входном тензоре из измерения глубины в пространственные блоки. Обычно эта операция используется для реализации свертки вложенного пикселя для некоторых моделей суперразрешения изображений.
  • space_to_depth: изменяет порядок элементов во входном тензоре от пространственных измерений до измерения глубины. Это в значительной степени обратное значение DepthToSpace.
  • sum операция: создайте новый экземпляр функции, который вычисляет сумму входных тензоров, мудрую элементом.
  • softsign операция: создайте новый экземпляр функции, который вычисляет мягкий знак элемента входного тензора.
  • asinh операция: создайте новый экземпляр функции, который вычисляет динаху элемента входного тензора.
  • log_softmax операция: создайте новый экземпляр функции, который вычисляет нормализованные значения logsoftmax входного тензора.
  • hard_sigmoid операция. Создайте новый экземпляр функции, который вычисляет hard_sigmoid нормализованные значения входного тензора.
  • element_and, , element_notelement_orelement_xor операции логики с помощью элементов
  • reduce_l1 операция: вычисляет норму L1 элемента входного тензора вдоль предоставленных осей.
  • reduce_l2 операция: вычисляет норму L2 элемента входного тензора вдоль предоставленных осей.
  • reduce_sum_square операция: вычисляет суммарный квадрат элемента входного тензора вдоль предоставленных осей.
  • image_scaler операция: изменение изображения путем масштабирования отдельных значений.

ONNX

  • В CNTK реализовано несколько улучшений поддержки ONNX.
  • Обновления
    • Обновлено оп ONNX Reshape для обработки InferredDimension.
    • Добавление producer_name и producer_version поля в модели ONNX.
    • Обработка случая, когда ни auto_padpads аррибут не указан в op ONNX Conv .
  • Исправления ошибок
    • Исправлена ошибка в сериализации операций ONNX Pooling
    • Исправление ошибки для создания ONNX InputVariable только с одной осью пакета.
    • Исправления ошибок и обновления реализации операции ONNX Transpose в соответствии с обновленной спецификацией.
    • Исправления ошибок и обновления реализации ONNX ConvConvTransposeи Pooling операций для сопоставления обновленной спецификации.

Операторы

  • Свертка группы
    • Исправлена ошибка в свертке группы. Выходные данные CNTK Convolution op изменятся для групп > 1. В следующем выпуске ожидается более оптимизированная реализация сверток группы.
    • Улучшено создание отчетов об ошибках для свертки группы на Convolution уровне.

Halide Binary Convolution

  • Теперь сборка CNTK может использовать необязательные библиотеки Halide для создания Cntk.BinaryConvolution.so/dll библиотек, которые можно использовать с модулемnetopt. Библиотека содержит оптимизированные операторы двоичной свертки, которые работают лучше, чем бинаризованные операторы сверток на основе Python. Чтобы включить Halide в сборке, скачайте выпуск Halide и задайте HALIDE_PATH varibale среды перед началом сборки. В Linux его можно использовать для ./configure --with-halide[=directory] включения. Дополнительные сведения об использовании этой функции см. в How_to_use_network_optimization.