Notas de la versión de CNTK v2.4

Aspectos destacados de esta versión

  • Se ha movido a CUDA9, cuDNN 7 y Visual Studio 2017.
  • Se ha quitado la compatibilidad con Python 3.4.
  • Se ha agregado compatibilidad con VOLTA GPU y FP16.
  • Mejor compatibilidad con ONNX.
  • Mejora de rendimiento de CPU.
  • Más direcciones ORGANIZATIVAs.

Direcciones organizativas

  • top_k operación: en el paso hacia delante calcula los valores principales (más grandes) k y los índices correspondientes a lo largo del eje especificado. En el paso hacia atrás, el degradado se dispersa a los elementos k superiores (un elemento que no está en la k superior obtiene un degradado cero).
  • gather Operation ahora admite un argumento de eje
  • squeeze y expand_dims las operaciones para quitar y agregar fácilmente ejes singleton
  • zeros_like y ones_like las operaciones. En muchas situaciones, solo puede confiar en CNTK difundir correctamente un simple 0 o 1, pero a veces necesita el tensor real.
  • depth_to_space: reorganiza los elementos del tensor de entrada de la dimensión de profundidad en bloques espaciales. El uso típico de esta operación es para implementar la convolución de sub píxeles para algunos modelos de super resolución de imágenes.
  • space_to_depth: reorganiza los elementos del tensor de entrada de las dimensiones espaciales a la dimensión de profundidad. Es en gran medida el inverso de DepthToSpace.
  • sum operation: cree una nueva instancia de Function que calcule la suma de elementos de tensores de entrada.
  • softsign operation: cree una nueva instancia de Function que calcule el signo temporal de elemento de un tensor de entrada.
  • asinh operation: cree una nueva instancia de Function que calcule el asinh de elemento de un tensor de entrada.
  • log_softmax operation: cree una nueva instancia de Function que calcule los valores normalizados logsoftmax de un tensor de entrada.
  • hard_sigmoid operation: cree una nueva instancia de Function que calcule los hard_sigmoid valores normalizados de un tensor de entrada.
  • element_and, element_not, , element_xorelement_oroperaciones lógicas en cuanto a elementos
  • reduce_l1 operation: calcula la norma L1 del elemento de tensor de entrada a lo largo de los ejes proporcionados.
  • reduce_l2 operation: calcula la norma L2 del elemento de tensor de entrada a lo largo de los ejes proporcionados.
  • reduce_sum_square operation: calcula el cuadrado de suma del elemento de tensor de entrada a lo largo de los ejes proporcionados.
  • image_scaler operación: modificación de la imagen mediante el escalado de sus valores individuales.

ONNX

  • Se han realizado varias mejoras en la compatibilidad con ONNX en CNTK.
  • Actualizaciones
    • Se ha actualizado la operación ONNX Reshape para controlar InferredDimension.
    • Agregar producer_name y producer_version campos a modelos ONNX.
    • Controlar el caso cuando no se especifica ni auto_padpads atrribute en la operación ONNX Conv .
  • Corrección de errores
    • Se ha corregido un error en la serialización de operaciones de ONNX Pooling .
    • Corrección de errores para crear ONNX InputVariable con un solo eje por lotes.
    • Correcciones de errores y actualizaciones de la implementación de la operación ONNX Transpose para que coincida con las especificaciones actualizadas.
    • Correcciones de errores y actualizaciones de la implementación de ONNX Conv, ConvTransposey Pooling las operaciones para que coincidan con las especificaciones actualizadas.

Operadores

  • Convolución de grupo
    • Se ha corregido un error en la convolución de grupos. La salida de CNTK Convolution operación cambiará para los grupos > 1. Se espera una implementación más optimizada de la convolución de grupos en la próxima versión.
    • Mejor informe de errores para la convolución de grupos en la Convolution capa.

Convolución binaria halide

  • La compilación CNTK ahora puede usar bibliotecas halide opcionales para compilar Cntk.BinaryConvolution.so/dll la biblioteca que se puede usar con el netopt módulo. La biblioteca contiene operadores de convolución binaria optimizados que funcionan mejor que los operadores de convolución binarized basados en Python. Para habilitar Halide en la compilación, descargue la versión de Halide y establezca HALIDE_PATH el entorno varibale antes de iniciar una compilación. En Linux, puede usarlo ./configure --with-halide[=directory] para habilitarlo. Para obtener más información sobre cómo usar esta característica, consulte How_to_use_network_optimization.