              vram = [pynvx.cudaGetMemFree(handle, ignore=True) / (1024 * 1024)
                      for handle in self.handles]
          else:
              vram = [pynvml.nvmlDeviceGetMemoryInfo(handle).free / (1024 * 1024)
                      for handle in self.handles]
          self.shutdown()
          if self.logger:
              self.logger.debug("GPU VRAM free: %s", vram)
          return vram
  
      def get_card_most_free(self, supports_plaidml=True):
          """ Return the card and available VRAM for active card with
              most VRAM free """
 
</s> remove     def get_free(self):
        """ Return the vram available """
        self.initialize()
        if self.plaid:
            # NB There is no useful way to get free VRAM on PlaidML.
            # OpenCL loads and unloads VRAM as required, so this returns the total memory
            # It's not particularly useful
            vram = self.plaid.vram
 </s> add         """
        self._initialize()
        if self._is_plaidml:
            vram = self._plaid.vram </s> remove                     for handle in self.handles]
 </s> add                     for handle in self._handles] </s> remove         if self.logger:
            self.logger.verbose("GPU VRAM used: %s", vram)
        return vram
 </s> add         Notes
        -----
        There is no useful way to get free VRAM on PlaidML. OpenCL loads and unloads VRAM as
        required, so this returns the total memory available per card for AMD cards, which us
        not particularly useful. </s> remove         elif IS_MACOS:
            vram = [pynvx.cudaGetMemUsed(handle, ignore=True) / (1024 * 1024)
                    for handle in self.handles]
        else:
            vram = [pynvml.nvmlDeviceGetMemoryInfo(handle).used / (1024 * 1024)
                    for handle in self.handles]
        self.shutdown()
 </s> add         Returns
        -------
        list
             List of floats containing the amount of VRAM available, in Megabytes, for each
             connected GPU as corresponding to the values in :attr:`_handles </s> remove                     for handle in self.handles]
 </s> add                     for handle in self._handles]
                    for handle in self._handles]
        self._shutdown()
        self._log("debug", "GPU VRAM free: {}".format(vram))
              vram = [pynvx.cudaGetMemFree(handle, ignore=True) / (1024 * 1024)
                      for handle in self.handles]
          else:
              vram = [pynvml.nvmlDeviceGetMemoryInfo(handle).free / (1024 * 1024)
                    for handle in self._handles]
        self._shutdown()
        self._log("debug", "GPU VRAM free: {}".format(vram))
                    for handle in self._handles]
        self._shutdown()
        self._log("debug", "GPU VRAM free: {}".format(vram))
                    for handle in self._handles]
        self._shutdown()
        self._log("debug", "GPU VRAM free: {}".format(vram))
                    for handle in self._handles]
        self._shutdown()
        self._log("debug", "GPU VRAM free: {}".format(vram))
          return vram
  
      def get_card_most_free(self, supports_plaidml=True):
          """ Return the card and available VRAM for active card with
              most VRAM free """
keep keep keep keep replace replace replace replace keep keep keep keep keep
 Core Updates (#1015)

- Remove lib.utils.keras_backend_quiet and replace with get_backend() where relevant
- Document lib.gpu_stats and lib.sys_info
- Remove call to GPUStats.is_plaidml from convert and replace with get_backend()
- lib.gui.menu - typofix 
lib/gpu_stats.py