Заметки о выпуске 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_not
element_or
element_xor
операции логики с помощью элементовreduce_l1
операция: вычисляет норму L1 элемента входного тензора вдоль предоставленных осей.reduce_l2
операция: вычисляет норму L2 элемента входного тензора вдоль предоставленных осей.reduce_sum_square
операция: вычисляет суммарный квадрат элемента входного тензора вдоль предоставленных осей.image_scaler
операция: изменение изображения путем масштабирования отдельных значений.
ONNX
- В CNTK реализовано несколько улучшений поддержки ONNX.
- Обновления
- Обновлено оп ONNX
Reshape
для обработкиInferredDimension
. - Добавление
producer_name
иproducer_version
поля в модели ONNX. - Обработка случая, когда ни
auto_pad
pads
аррибут не указан в op ONNXConv
.
- Обновлено оп ONNX
- Исправления ошибок
- Исправлена ошибка в сериализации операций ONNX
Pooling
- Исправление ошибки для создания ONNX
InputVariable
только с одной осью пакета. - Исправления ошибок и обновления реализации операции ONNX
Transpose
в соответствии с обновленной спецификацией. - Исправления ошибок и обновления реализации ONNX
Conv
ConvTranspose
иPooling
операций для сопоставления обновленной спецификации.
- Исправлена ошибка в сериализации операций ONNX
Операторы
- Свертка группы
- Исправлена ошибка в свертке группы. Выходные данные CNTK
Convolution
op изменятся для групп > 1. В следующем выпуске ожидается более оптимизированная реализация сверток группы. - Улучшено создание отчетов об ошибках для свертки группы на
Convolution
уровне.
- Исправлена ошибка в свертке группы. Выходные данные CNTK
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.