Thanks again for saving the day @albanD.
If you don’t mind me asking a couple follow ups just to clarify my understanding?
1.) Is this the default way to pass multiple args into .apply(), or is there a better way?
net.apply(lambda module: init_buffers(module=module, params=params))

If you notice in the example there’s dummy_params = [] list which holds values of module and name but because I’ve popped module params and register different params and names before adding them to dummy_list, now if I print(dummy_list) it throws an error of param bias not existing in module.
The only way to get values from dummy_params is to iterate over and use module.__getattr__('%s_alpha' % name), which leads me to following question.
2.) Is module.__getattr__ the default way to retrieve values from module.register_buffer, even if I had them stored in dummy_list?