CNTK v2.4 リリース ノート

このリリースの重要なポイント

  • CUDA9、cuDNN 7、Visual Studio 2017 に移行。
  • Python 3.4 のサポートを削除しました。
  • Volta GPU と FP16 のサポートが追加されました。
  • ONNX のサポートが向上しました。
  • CPU パフォーマンスの向上。
  • その他の IP。

Ops

  • top_k 操作: 前方パスでは、指定した軸に沿って上位 (最大) k 値と対応するインデックスを計算します。 後方パスでは、グラデーションは上部の k 要素に分散されます (上 k 以外の要素は 0 のグラデーションを取得します)。
  • gather 操作で軸引数がサポートされるようになりました
  • squeeze シングル expand_dims トン軸を簡単に取り外して追加するための操作
  • zeros_likeones_like 操作。 多くの状況では、単純な 0 または 1 を正しくブロードキャストCNTKに頼ることができますが、実際のテンソルが必要な場合があります。
  • depth_to_space: 入力テンソル内の要素を深度ディメンションから空間ブロックに再配置します。 この操作の一般的な用途は、一部の画像スーパー解像度モデルにサブピクセル畳み込みを実装することです。
  • space_to_depth: 入力テンソル内の要素を空間ディメンションから深度ディメンションに再配置します。 これは、主に DepthToSpace の逆関数です。
  • sum operation: 入力テンソルの要素ごとの合計を計算する新しい関数インスタンスを作成します。
  • softsign operation: 入力テンソルの要素ごとのソフトサインを計算する新しい関数インスタンスを作成します。
  • asinh 操作: 入力テンソルの要素ごとの asinh を計算する新しい関数インスタンスを作成します。
  • log_softmax operation: 入力テンソルの logsoftmax 正規化値を計算する新しい Function インスタンスを作成します。
  • hard_sigmoid 操作: 入力テンソルのhard_sigmoid正規化された値を計算する新しい関数インスタンスを作成します。
  • element_andelement_not要素element_orelement_xorごとのロジック操作
  • reduce_l1 operation: 指定された軸に沿って入力テンソルの要素の L1 ノルムを計算します。
  • reduce_l2 operation: 指定された軸に沿って入力テンソルの要素の L2 ノルムを計算します。
  • reduce_sum_square 操作: 指定された軸に沿って入力テンソルの要素の合計二乗を計算します。
  • image_scaler 操作: 個々の値をスケーリングしてイメージを変更します。

ONNX

  • CNTKでの ONNX サポートにはいくつかの機能強化が行われています。
  • 更新
    • 処理するように ONNX Reshape op を InferredDimension更新しました。
    • ONNX モデルへの追加 producer_nameproducer_version フィールド。
    • ONNX Conv op で atrribute もpads指定されていないauto_pad場合のケースの処理。
  • バグ修正
    • ONNX Pooling op のシリアル化のバグを修正しました
    • バッチ軸が 1 つだけの ONNX InputVariable を作成するバグを修正しました。
    • 更新された仕様に一致する ONNX Transpose op の実装に対するバグ修正と更新。
    • 更新された仕様に一致する ONNX ConvConvTransposeおよび ops の実装に対するバグ修正と Pooling 更新。

演算子

  • グループ畳み込み
    • グループ畳み込みのバグを修正しました。 グループ > 1 では、CNTK Convolution op の出力が変更されます。 次のリリースでは、グループ畳み込みのより最適化された実装が期待されます。
    • レイヤー内のグループ畳み込みのエラー報告が Convolution 改善されました。

ハライド二項畳み込み

  • CNTK ビルドでは、オプションのハライド ライブラリを使用して、モジュールで使用できるライブラリをnetoptビルドCntk.BinaryConvolution.so/dllできるようになりました。 ライブラリには、Python ベースのバイナリ畳み込み演算子よりも優れたパフォーマンスを発揮する最適化されたバイナリ畳み込み演算子が含まれています。 ビルドでハライドを有効にするには、ビルドを開始する前に 、ハライドリリース をダウンロードし、環境バリバリを設定 HALIDE_PATH してください。 Linux では、これを有効にするために使用 ./configure --with-halide[=directory] できます。 この機能の使用方法の詳細については、 How_to_use_network_optimizationを参照してください。