質問は以下の通り
RuntimeError: CUDA エラー: デバイス側アサートによってトリガーされた
CUDA カーネル エラーは、他の API 呼び出しで非同期的に報告される可能性があるため、以下のスタックトレースは正しくない可能性があります。
デバッグの場合は、CUDA_LAUNCH_BLOCKING=1 を渡すことを検討してください。
理由1
私の問題では、一部のラベルが範囲外であることが原因で、たとえば、合計 8 つのクラスを設定したが、トレーニング データのラベルに 9 つが表示された場合、このエラーが報告されます。
1を解決します
このとき、ラベルを変更するか、データ セットのラベルに含まれる最大範囲まで出力カテゴリの数を増やす必要があります。たとえば、データ セット内の最大のラベルの ID が 90 であることを確認した後、 90 カテゴリを出力するようにコードを変更します。問題ありません。この結果、存在しないタイプがいくつかありますが、それはあまり重要ではありません。1 つも存在しない場合は、1 つも存在しません。 。
理由2
コードが出力するカテゴリの数に問題があります。カテゴリは合計 5 つあります。コードの最後の層の出力は 4 カテゴリです。このようなエラーも発生します。基本的に上記の問題と同じです。 、これは範囲を超えたラベルに相当します。
2を解く
コードの最後の層の出力構造を変更する