              vram = [pynvml.nvmlDeviceGetMemoryInfo(handle).used / (1024 * 1024)
                      for handle in self.handles]
          self.shutdown()
  
          if self.logger:
              self.logger.verbose("GPU VRAM used: %s", vram)
          return vram
  
      def get_free(self):
          """ Return the vram available """
          self.initialize()
          if self.plaid:
 
</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]
        self.shutdown()
        if self.logger:
            self.logger.debug("GPU VRAM free: %s", vram)
 </s> add                     for handle in self._handles]
        self._shutdown()
        self._log("debug", "GPU VRAM free: {}".format(vram)) </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]
        if self.logger:
            self.logger.debug("GPU VRAM: %s", vram)
 </s> add                     for handle in self._handles]
        self._log("debug", "GPU VRAM: {}".format(vram)) </s> remove                     for handle in self.handles]
 </s> add                     for handle in self._handles]
        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.
              vram = [pynvml.nvmlDeviceGetMemoryInfo(handle).used / (1024 * 1024)
                      for handle in self.handles]
          self.shutdown()
  
        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.
        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.
        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.
  
      def get_free(self):
          """ Return the vram available """
          self.initialize()
          if self.plaid:
keep keep keep keep 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