Get modules.

        This function is internally used as the helper method for other methods.

        Args: 
            memo (set, optional): Module set in order to memorize to visit.
            prefix (str, optional): Prefix to a specific parameter name.

        Yields:
            `Module`: The module class.

def get_modules(self, memo=None, prefix=""):
        """Get modules.

        This function is internally used as the helper method for other methods.

        Args: 
            memo (set, optional): Module set in order to memorize to visit.
            prefix (str, optional): Prefix to a specific parameter name.

        Yields:
            `Module`: The module class.
        """
        if memo is None:
            memo = set()

        if self not in memo:
            memo.add(self)
            yield prefix, self
            for k, v in self.__dict__.items():
                if not isinstance(v, Module):
                    continue
                name, module = k, v
                submodule_prefix = "{}/{}".format(prefix,
                                                  name) if prefix != "" else name
                for m in module.get_modules(memo, submodule_prefix):
                    yield m