              title="mixed_precision",
              datatype=bool,
              default=False,
              group="network",
              info="R|[Nvidia Only], NVIDIA GPUs can run operations in float16 faster than in "
                   "float32. Mixed precision allows you to use a mix of float16 with float32, to "
                   "get the performance benefits from float16 and the numeric stability benefits "
                   "from float32.\n\nWhile mixed precision will run on most Nvidia models, it will "
                   "only speed up training on more recent GPUs. Those with compute capability 7.0 "
                   "or higher will see the greatest performance benefit from mixed precision "
 
</s> remove         self._config.config = new_config
        self._config.save_config()
        logger.info("Saved config: '%s'", self._config.configfile)
        self.destroy()

        running_task = get_config().tk_vars["runningtask"].get()
        if self._name.lower() == "gui" and not running_task:
            self._root.rebuild()
        elif self._name.lower() == "gui" and running_task:
            logger.info("Can't redraw GUI whilst a task is running. GUI Settings will be applied "
                        "at the next restart.")
 </s> add         config.config = new_config
        config.save_config()
        logger.info("Saved config: '%s'", config.configfile)

        if category == "gui":
            if not get_config().tk_vars["runningtask"].get():
                get_config().root.rebuild()
            else:
                logger.info("Can't redraw GUI whilst a task is running. GUI Settings will be "
                            "applied at the next restart.") </s> remove         container: :class:`ttk.Notebook`
            The notebook to place the category options into
        category: str
            The name of the categories to build options for
 </s> add         section: str
            The main section to be navigated to (or root node)
        subsections: list
            The full list of subsections ending on the required node
        """
        labels = ["global"] if not subsections else subsections
        self._vars["header"].set(" - ".join(sect.replace("_", " ").title() for sect in labels))
        self._set_display(section, subsections) </s> remove         frame.pack(fill=tk.BOTH, padx=5, pady=5, side=tk.BOTTOM)
        btn_cls.pack(padx=2, side=tk.RIGHT)
        btn_ok.pack(padx=2, side=tk.RIGHT)
        btn_rst.pack(padx=2, side=tk.RIGHT)
 </s> add         Parameters
        ----------
        key: str
            The lookup key to set the links page for
        """
        frame = ttk.Frame(self)
        links = {item.replace(key, "")[1:].split("|")[0]
                 for item in self._config_cpanel_dict
                 if item.startswith(key)}

        if not links:
            return frame

        header_lbl = ttk.Label(frame, text="Select a plugin to configure:")
        header_lbl.pack(side=tk.TOP, fill=tk.X, padx=5, pady=(5, 10))
        for link in sorted(links):
            lbl = ttk.Label(frame,
                            text=link.replace("_", " ").title(),
                            anchor=tk.W,
                            foreground="blue",
                            cursor="hand2")
            lbl.pack(side=tk.TOP, fill=tk.X, padx=10, pady=(0, 5))
            bind = "{}|{}".format(key, link)
            lbl.bind("<Button-1>", lambda e, l=bind: self._link_callback(l))

        return frame

    def _link_callback(self, identifier):
        """ Set the tree view to the selected item and display the requested page on a link click. </s> remove         Returns
        -------
        :class:'~lib.gui.control_helper.ControlPanel` or :class:`ttk.Notebook`
            The control panel options in a Control Panel frame (for single plugin configurations)
            or a Notebook containing tabs with Control Panel frames (for multi-plugin
            configurations)
 </s> add     def _set_display(self, section, subsections):
        """ Set the correct display page for the given section and subsections.

        Parameters
        ----------
        section: str
            The main section to be navigated to (or root node)
        subsections: list
            The full list of subsections ending on the required node </s> remove         logger.debug("Building plugin config page: '%s'", category)
        plugins = sorted(list(key for key in self._config_cpanel_dict[category].keys()))
        panel_kwargs = dict(columns=2, max_columns=2, option_columns=2, blank_nones=False)
        if any(plugin != category for plugin in plugins):
            page = ttk.Notebook(container)
            for plugin in plugins:
                cp_options = list(self._config_cpanel_dict[category][plugin].values())
                frame = ControlPanel(page,
                                     cp_options,
                                     header_text=self._plugin_info[plugin],
                                     **panel_kwargs)
                title = plugin[plugin.rfind(".") + 1:]
                title = title.replace("_", " ").title()
                page.add(frame, text=title)
            page.pack(side=tk.TOP, fill=tk.BOTH, expand=True)
 </s> add         key = "|".join([section] + subsections)
        if self._displayed_frame is not None:
            self._displayed_frame.pack_forget()

        if key not in self._cache:
            self._cache_page(key)

        self._displayed_frame = self._cache[key]
        self._displayed_frame.pack(side=tk.BOTTOM, fill=tk.BOTH, expand=True)

    def _cache_page(self, key):
        """ Create the control panel options for the requested configuration and cache.

        Parameters
        ----------
        key: str
            The lookup key to the settings cache
        """
        panel_kwargs = dict(columns=1, max_columns=1, option_columns=4, blank_nones=False)
        info = self._config_cpanel_dict.get(key, None)
        if info is None:
            logger.debug("key '%s' does not exist in options. Creating links page.", key)
            self._cache[key] = self._create_links_page(key)
            info="[Nvidia Only], NVIDIA GPUs can run operations in float16 faster than in "
              title="mixed_precision",
              datatype=bool,
              default=False,
              group="network",
            info="[Nvidia Only], NVIDIA GPUs can run operations in float16 faster than in "
                   "float32. Mixed precision allows you to use a mix of float16 with float32, to "
                   "get the performance benefits from float16 and the numeric stability benefits "
                   "from float32.\n\nWhile mixed precision will run on most Nvidia models, it will "
                   "only speed up training on more recent GPUs. Those with compute capability 7.0 "
                   "or higher will see the greatest performance benefit from mixed precision "
keep keep keep keep replace keep keep keep keep keep
 GUI: Consolidate settings to single menu 
plugins/train/_config.py