v0.15.0
What's Changed
- Implement batching capabilities for caskade by @ConnorStoneAstro in #70
Caskade now has "herarchical models" or the ability to place one simulator inside another to support vmap or other featuers which are explicitly required to have access to params at call time.
Caskade also now has param "groups", which allow dividing the params object into sub groups to give control over what call-time functions are used (vmap, jacobian, grad, etc.).
Breaking changes
- Param shapes are now more solidly defined. If a user sets a shape then it will not change as the value is set. There are three possibilities when setting the value, first it is incompatible with the shape (i.e. a scalar when the shape requires a vector) which will throw an error, second the value matches the shape, third the value has leading batch dimensions (value shape of (4,2) and param shape of (2,) means there is a batch of size 4)
- Param names must now always be valid python identifiers (
my_nodeis ok, butmy nodeis not). This is also true for linking keys when linking Nodes - Param
batchedis not setable, now one must explicitly providebatch_shape Param.to_pointernow requires that a value is passed (either param or callable)- Module no longer tracks
dynamic_modules,child_dynamic_params, orall_dynamic_value - ActiveContext cannot be nested (not sure who was doing that anyway)
- Node.active cannot be set by the user (I hope no one was doing this)
Full Changelog: v0.14.1...v0.15.0