gin-config icon indicating copy to clipboard operation
gin-config copied to clipboard

Feature suggestion: defining arbitrary functions only using gin

Open OhadRubin opened this issue 1 year ago • 0 comments

This may be kinda hacky, but what if I wanted to use some function and only define it via gin file, so this is the solution I came up with: Function:

#utils.py
@gin.configurable
def arbitrary_func(module_name, func_name, kwargs):
  """Returns a function from a module."""
  module = importlib.import_module(module_name)
  func = getattr(module, func_name)
  return func(**kwargs)

Gin file:

import utils
lr_schedule/utils.arbitrary_func:
    module_name = "optax"
    func_name = "linear_schedule"
    kwargs = { "init_value":0.005, "end_value":0.1, "transition_steps": 10000 }

optimizer_config.AdamConfig:
    lr_schedule = @lr_schedule/utils.arbitrary_func()

let me know what you think.

OhadRubin avatar Dec 17 '22 06:12 OhadRubin