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`手法を介して)メモリに残ります。リソースのクリーンアップのための追加のタスクは試行されません。
この戦略はメモリ不足エラーにつながる可能性があり、セッションの範囲が少量の操作のみを実行するように制限されていない限り、その使用は推奨されません。