Release notes¶
Unreleased¶
Feat¶
- pycmtensor.py: Implemented early stopping on coefficient convergence in training loop
- functions.py: logit method now takes uneven dimensioned-utilities
- expression.py: Added RandomDraws expression for sampling in mixed logit
- get_train_data optional argument numpy_out to return numpy arrays rather than pandas arrays
- BHHH algorithm for calculating var-covar matrix applies to each data row
Fix¶
- tests.yml: Update tests workflow file conda packages
- optimizers.py: Fixed name typo in
__all__
- results.py: Corrected calculation of hessian and bhhh matrices
- scheduler.py: Moved class function calls to parent class
- statistics.py: Fixed rob varcovar calculation error
- MNL.py: Moved aesara function to parent class
- data.py: Streamlined class function calls and removed unnecessary code
- removed package import clashes with config.py
- removed gnorm calculation
- update hessian matrix and bhhh algorithm functions
Refactor¶
- utils.py: Removed unused code
v1.3.2 (2023-06-23)¶
Fix¶
- make arguments in
MNL
as optional keyword arguments - moved learning rate variable to
PyCMTensorModel
class
Refactor¶
- make model variables as property
- update
__all__
package variables - added
train_data
andvalid_data
property toData
class
v1.3.1 (2022-11-17)¶
Fix¶
- fix utility dimensions for asc only cases
v1.3.0 (2022-11-10)¶
Feat¶
- optimizers: added
Nadam
optimizer - layers.py: added
DenseLayer
BatchNormLayer
ResidualLayer
- added
pycmtensor.about()
to output package metadata - added EMA function
functions.exp_mov_average()
Fix¶
- renamed depreceated instances of
aesara
modules - data.py: defaults
batch_size
argument to 0 if batch_size isNone
- updated syntax for
expressions.py
class objects - added
init_type
property toWeights
class - moved model aesara compile functions from
models.MNL
topycmtensor.PyCMTensorModel
- added argument type hints in function.py
Refactor¶
- data: added import dataset cleaning step as arguments in
Data()
- moved ResidualLayer to
pycmtensor.models.layers
- updated timing to perf_counter
- pycmtensor: refactoring model_loglikelihood
v1.2.1 (2022-10-25)¶
Feat¶
- added
pycmtensor.about()
to output package metadata - added EMA function
functions.exp_mov_average()
Fix¶
- updated syntax for
expressions.py
class objects - added
init_type
property toWeights
class - moved model aesara compile functions from
models.MNL
topycmtensor.PyCMTensorModel
v1.2.0 (2022-10-14)¶
Feat¶
- expressions: added Weights class object (#59)
- functions: added rmse and mae objective functions (#58)
- batch shuffle for training
- function: added KL divergence loss function (#50)
Fix¶
- added expand_dims into logit function
- replace class function Beta.Beta with Beta.beta
- removed flatten() from logit function
v1.1.0 (2022-09-23)¶
Feat¶
- scheduler: added learning rate scheduling to train()
- code: overhaul and cleanup
Fix¶
- environment: update project deps and pre-commit routine
- config: remove unnecessary cxx flags from macos builds
Perf¶
- config: misc optimization changes
v1.0.7 (2022-08-12)¶
v1.0.6 (2022-08-12)¶
Fix¶
- config: added optimizing speedups to config
- config: set default
cyclic_lr_mode
andcyclic_lr_step_size
toNone
- pre-commit-config: update black to
22.6.0
in pre-commit check
Refactor¶
- models: refactored build_functions() into models.py
- database: refactor set_choice(choiceVar)
v1.0.5 (2022-07-27)¶
Fix¶
- tests: removed depreciated tests
- routine: remove depreciated tqdm module
v1.0.4 (2022-07-27)¶
Fix¶
- pycmtensor.py: update training method
- config.py: new config option verbosity: "high", "low"
- pycmtensor.py: remove warnings for max_iter<patience
v1.0.3 (2022-05-12)¶
v1.0.2 (2022-05-12)¶
v1.0.1 (2022-05-12)¶
Fix¶
- scheduler: fix missing args in input parameters
- scheduler: fix constantLR missing input paramerer
v1.0.0 (2022-05-10)¶
Feat¶
- python: update to python 3.10
Fix¶
- tests: update tests files to reflect changes in biogeme removal
v0.8.0 (2022-05-10)¶
Feat¶
- deps: remove Biogeme dependencies
v0.7.1 (2022-05-10)¶
Fix¶
- expressions: remove Biogeme dependencies
- database: remove dependencies of Biogeme
- debug: remove debug handler after each run to prevent duplication
- models: add function to return layer output -> get_layer_outputs()
- debug: disables tqdm if debug mode is on and activates debug_log
Refactor¶
- move elasticites from models to statistics for consistency
v0.7.0 (2022-03-17)¶
Feat¶
- models: add functionality to compute elasticities of choice vs attribute in models.py
Fix¶
- results: remove unnessary
show_weights
option in Results - set default max_epoch on training run to adaptive rule
- print valid config options when invalid options are given as args to train()
- scheduler: modified cyclic_lr config loading sequence to fix unboundError
- train: turn saving model off for now
- config: generate os dependent ld_flags
Refactor¶
- utils: refactored save_to_pickle and disables it
Perf¶
- IterationTracker: use numpy array to store iteration data
v0.6.5 (2022-03-14)¶
Feat¶
- models: Implement the ResLogit layer
Fix¶
- config: set default learning schedule to ConstantLR
- config: set default seed to a random number on init
v0.6.4 (2022-03-13)¶
Feat¶
- scheduler.py: add new scheduler (CyclicLR) for adaptive LR
Fix¶
- project: fix project metadata and ci
- config: loadout config from train() to configparser
- utils: fix TypeError check
v0.5.0 (2022-03-02)¶
Feat¶
- config: add PyCMTensorConfig class to store config settings
- expressions: add magic methods lt le gt le ne eq
- config.py: enable pre-writing of .aesararc config file on module load
- models: add method prob() to MNLogit to output prob slices
- time_format: enable logging of build and estimation time
- results: add Predict class to output probs or discrete choices
- optimizers: add AdaGram algorithm
- Database: add getattr build-in type to Database
- pycmtensor.py: add model.output_choices to generate choices
Fix¶
- statistics: add small value to stderror calculation to address sqrt(0)
- dependencies: move ipywidgets and pydot to dependencies
- renamed .rst to .md fix FileNotFoundError
- result: print more verbose results and options
- Database: add name to shared_data
- train: model instance now load initiated model class (not input Class as argument)
- Database: set choiceVar to mandatory argument
- PyCMTensor: rename append_to_params to add_params for consistency
- PyCMTensor: new method to add regularizers to cost function
- Expressions: invokes different operator for Beta Beta maths
- show excluded data in model est. output
- results: standardized naming conventions in modules db->database
- tqdm: add arg in train() to enable notebook progressbar
- swissmetro_test.ipynb: update swissmetro example
Refactor¶
- PyCMTensor: refactoring models from pycmtensor.py
- Database: refactor(Database): refactoring database.py from pycmtensor.py
- optimizers: refactor base Optimizer class
- moved Beta Weights to expressions.py
Perf¶
- shared_data: improve iteration speed by implementing shared() on input data