TensorFlow リソースが不要になったときにどのようにクリーンアップするかを制御します。
EagerSession
中に割り当てられたすべてのリソースは、セッションが終了すると削除されます。メモリ不足エラーを防ぐために、セッション中にこれらのリソースをクリーンアップすることも強くお勧めします。たとえば、m 回の反復のループで n 個の操作を実行すると、最小 n*m のリソースが割り当てられますが、ほとんどの場合、最後の反復のリソースのみが引き続き使用されます。
EagerSession
インスタンスは、TensorFlow オブジェクトが参照されなくなったときにさまざまな方法で通知できるため、所有していたリソースのクリーンアップに進むことができます。
継承されたメソッド
列挙値
public static Final EagerSession.ResourceCleanupStrategy IN_BACKGROUND
バックグラウンドで実行されている新しいスレッドから未使用のリソースを監視し、削除します。
これは TensorFlow リソースをクリーンアップするための最も信頼性の高いアプローチですが、このタスク専用の追加スレッドを開始して実行するというコストがかかります。各EagerSession
インスタンスには独自のスレッドがあり、セッションが閉じられた場合にのみ停止されます。
この戦略はデフォルトで使用されます。
public static Final EagerSession.ResourceCleanupStrategy ON_SAFE_POINTS
既存のスレッドが別のタスクを完了する前または後に、未使用のリソースを監視し、既存のスレッドから削除します。
TensorFlow ライブラリへの呼び出しがクリーンアップの安全なポイントに達すると、未使用のリソースが解放されます。これは同期的に行われるため、その呼び出しをトリガーしたスレッドが短期間ブロックされる可能性があります。
この戦略は、何らかの理由でクリーンアップに追加のスレッドを割り当てる必要がない場合にのみ使用してください。それ以外の場合は、 IN_BACKGROUND
優先する必要があります。
public static Final EagerSession.ResourceCleanupStrategy ON_SESSION_CLOSE
リソースを削除するのは、セッションが閉じている場合のみにしてください。
セッション中に割り当てられたすべてのリソースは、セッションが明示的に閉じられるまで (または従来の「try-with-resource」手法によって) メモリ内に残ります。リソースのクリーンアップのための追加のタスクは試行されません。
この戦略はメモリ不足エラーを引き起こす可能性があるため、セッションの範囲が少量の操作のみを実行するように制限されている場合を除き、その使用はお勧めできません。