高パフォーマンスのスレッドの数が少ないという特徴があります。低パフォーマンスのスレッドの数が非常に多いという特徴があります。小さい単純なスレッドと考えることができます。内の配列はタイル状になっています。倍数にパディングする必要があります。レイアウトの変換を行い、ハードウェアがデータを効率的に処理できるようにデータをメモリに配置します。これらの変換はヒューリスティクスによって行われます。これらはほとんどの場合有益ですが、コンパイラが間違った処理を行う可能性は常にあります。最高のパフォーマンスを得るには、さまざまなモデル構成を試すことが有益です。パディングのコストを最小限に抑えるタイル状のメモリスキームを使用した結果は、効率的なメモリ使用率はパディングのオーバーヘッドで無駄に消費されたメモリ量に依存するというものです。畳み込み結果には、(1)バッチ、(2)出力フィーチャ、(3)出力空間のディメンションがあります。倍数にパディングされます。出力空間ディメンションはパディングされません。)を使用した演算では、空間ディメンションはパディングされません。サイズを決定する際は注意が必要です。ユニットを最大限に活用するには、バッチまたはフィーチャに適した大きな値(>=128)、できれば両方の値を求めます。ユニットを完全に占有するのに十分です。倍数であるバッチサイズを使用することをおすすめします。倍数であるバッチサイズを使用してみてください。いずれかにパディングされるディメンションにマッピングされます。倍数で最小のスペースを浪費します。コンパイラがプログラムの最適化に使用する一般的な手法です。融合演算は、組み合わせて実行する、複数の構成演算の組み合わせです。次の一連の演算について考えてみます。z)このコードは、次の擬似コードとほぼ同じです。z[i];}融合により、配列アクセスが同時に発生します。「tmp」にスペースを割り当てる必要がありませんでした。低速のメインメモリに中間結果を保存する必要をなくして、メモリ転送を低減します。ユニットを有効に活用できます。同時にアクティブ化されるバッファの数が少ないため、モデルのメモリ使用率を低減できます。つのテンソルが組み合わされたときに暗黙的に発生します。マトリックスのシェイプにベクトルをブロードキャストすることを要求します。演算の結果は、マトリックスと同じシェイプになります。詳細については、配列のブロードキャストのガイドをご覧ください。ブロードキャストは多くの場合コンシューマと融合できますが、ブロードキャストを実体化するとパフォーマンスが低下し、メモリの負荷が増加します。融合することはできません。演算の完全なリストをご覧ください。tf.matmulいずれかのオペランドの結果の転置は事実上自由です。その入力と出力への融合をサポートしていることに注意してください。出力に直接適用される活性化関数やバイアスのオーバーヘッドが少なくなります。倍数にパディングされます。ディメンションのサイズを追跡します。これにより、順方向畳み込み、活性化勾配畳み込み、カーネル勾配畳み込みを区別できます。倍数にパディングされます。倍数にパディングされます。倍数にパディングされます。倍数にパディングされます。ディメンションを入れ替えるだけの場合は、畳み込みに送信する直前に活性化を自由に転置できます。倍数にパディングされます。その決定は、カーネルのプロデューサーや他のコンシューマの影響を受けます。転置で入力と出力の特徴ディメンションを入れ替えるだけの場合は、畳み込みに送信する直前のカーネルを自由に転置できます。倍数にパディングされます。ディメンションと出力特徴ディメンションを入れ替えるだけの場合は、畳み込みの結果を自由に転置できます。結果、活性化、カーネルへの融合をサポートしていることに注意してください。このため、出力に直接適用される活性化関数やバイアスのオーバーヘッドが少なくなります。ルールが適用されます。空間ディメンションはバッチや特徴よりも重要です。倍数にパディングされます。通常、プール演算のレイアウトは、そこに流れて出入りする畳み込みと一致します。低速になる場合があります。変更を検討してください。tf.concat、tf.slice、tf.strided_slice不要なスライスや連結は避けてください。パディングされたディメンション内のスライスと連結は、高コストになります。ディメンションにパディングのオーバーヘッドがなければ、データの移動が最小限に抑えられます。その結果のオペランドのいずれかの転置は自由に行うことができます。活性化を自由に転置できます。カーネルを自由に転置できます。結果を自由に転置できます。tf.batch_to_space、tf.space_to_batch、tf.space_to_depth、tf.depth_to_spaceこれらは、パディングされたディメンションからパディングされていないディメンション(またはその逆)へのデータの移動が必要なため、コストがかかります。リシェイプが高コストになる場合があります。データをリシェイプし、デバイス上高位のディメンションのシェイプにリシェイプすると有益です。これにより、ホストとデバイスの間の転送をより効率的に行うことができます。パッケージ化されたパラメータをオンデマンドで展開できるため、ピーク時のメモリ使用率の向上にも役立ちます。tf.random_uniform、tf.distributions.Bernoulli、tf.random_normal、tf.multinomial一様分布またはベルヌーイ分布の擬似乱数生成は非常に高速です。正規分布は、一様分布またはベルヌーイ分布よりも少しコストがかかります。カテゴリ分布と多項分布の擬似乱数生成はかなりコストがかかります。tf.reduce_all、tf.reduce_any、tf.reduce_logsumexp、tf.reduce_max、tf.reduce_min、tf.reduce_prod、tf.reduce_sum入力シェイプと出力シェイプが同じ場合、融合によって複数の縮約を並行して実行できます。可能な場合は、縮約の順次連鎖を平行連鎖に書き換えてみてください。縮約は要素ごとの演算を入力に融合させますが、出力には融合させません。可能な場合は、式を書き換えて融合を進めます。y)以下のようになります。融合バリアントを効率的に減らすことができます。これらを使用する方が、別の方法を使用するよりかなり効率的です。