نحوه پاکسازی منابع TensorFlow را در زمانی که دیگر مورد نیاز نیستند، کنترل می کند.
تمام منابع تخصیص داده شده در طول یک EagerSession
با بسته شدن جلسه حذف می شوند. برای جلوگیری از خطاهای از دست رفتن حافظه، اکیداً توصیه می شود که این منابع را در طول جلسه پاکسازی کنید. به عنوان مثال، اجرای n عملیات در حلقه ای از m تکرار، حداقل n*m منابع را به خود اختصاص می دهد در حالی که در بیشتر موارد، فقط منابع آخرین تکرار هنوز در حال استفاده هستند.
هنگامی که اشیاء TensorFlow دیگر ارجاع نمیشوند، میتوان موارد EagerSession
را به روشهای مختلف مطلع کرد، بنابراین میتوانند به پاکسازی منابعی که در اختیار دارند، ادامه دهند.
روش های ارثی
مقادیر Enum
EagerSession.ResourceCleanupStrategy نهایی استاتیک عمومی IN_BACKGROUND
منابع بلااستفاده را از یک رشته جدید که در پسزمینه اجرا میشود نظارت و حذف کنید.
این قابل اعتمادترین رویکرد برای پاکسازی منابع TensorFlow است که به قیمت شروع و اجرای یک رشته اضافی اختصاص داده شده به این کار است. هر نمونه EagerSession
رشته خود را دارد که تنها زمانی که جلسه بسته شود متوقف می شود.
این استراتژی به صورت پیش فرض استفاده می شود.
EagerSession.ResourceCleanupStrategy نهایی استاتیک عمومی ON_SAFE_POINTS
منابع بلااستفاده را از موضوعات موجود، قبل یا بعد از اتمام کار دیگری، نظارت و حذف کنید.
هنگامی که تماس با کتابخانه TensorFlow به یک نقطه امن برای پاکسازی می رسد، منابع استفاده نشده آزاد می شوند. این کار به صورت همزمان انجام می شود و ممکن است برای مدت کوتاهی رشته ای که آن تماس را راه اندازی کرده است مسدود کند.
این استراتژی فقط در صورتی باید مورد استفاده قرار گیرد که بنا به دلایلی، نخ اضافی برای پاکسازی اختصاص داده نشود. در غیر این صورت، IN_BACKGROUND
باید ترجیح داده شود.
EagerSession.ResourceCleanupStrategy نهایی استاتیک عمومی ON_SESSION_CLOSE
فقط زمانی که جلسه بسته است منابع را حذف کنید.
تمام منابع تخصیص داده شده در طول جلسه تا زمانی که جلسه به طور صریح بسته نشود (یا از طریق تکنیک سنتی «تلاش با منبع») در حافظه باقی خواهند ماند. هیچ کار اضافی برای پاکسازی منابع انجام نخواهد شد.
این استراتژی می تواند منجر به خطاهای خارج از حافظه شود و استفاده از آن توصیه نمی شود، مگر اینکه محدوده جلسه محدود به اجرای مقدار کمی از عملیات باشد.