Volume.assign_budget takes the learned budget_weights [-inf,inf] and normalises them to sum to 1 via a softmax function.
This has the advantage that the learnable parameters have no constraint on their values (i.e. don't have to be positive).
It does however meant that there is a non-linear relationship between the learned values and the actual budget that each detector receives; which could lead to unpredictable/unexpected behaviour (e.g. panels suddenly becoming very large/small).
Instead I think it might be worth investigating how well the optimisation handles clamping the parameters in [0,inf] and normalising by their sum.
Volume.assign_budget
takes the learnedbudget_weights
[-inf,inf] and normalises them to sum to 1 via a softmax function. This has the advantage that the learnable parameters have no constraint on their values (i.e. don't have to be positive). It does however meant that there is a non-linear relationship between the learned values and the actual budget that each detector receives; which could lead to unpredictable/unexpected behaviour (e.g. panels suddenly becoming very large/small). Instead I think it might be worth investigating how well the optimisation handles clamping the parameters in [0,inf] and normalising by their sum.