This answer doesn’t address the specifics of this question, but explains the underlying issue.
This specific exception “AttributeError: can’t set attribute” is raised (see source) when the attribute you’re attempting to change is actually a property that doesn’t have a setter. If you have access to the library’s code, adding a setter would solve the problem.
EDIT: updated source link to new location in the code.
Edit2:
Example of a setter:
class MAMLMetaLearner(nn.Module):
def __init__(
self,
args,
base_model,
inner_debug=False,
target_type="classification"
):
super().__init__()
self.args = args # args for experiment
self.base_model = base_model
assert base_model is args.model
self.inner_debug = inner_debug
self.target_type = target_type
@property
def lr_inner(self) -> float:
return self.args.inner_lr
@lr_inner.setter
def lr_inner(self, new_val: float):
self.args.inner_lr = new_val