Skip to content

Releases: earthspecies/avex

v1.0.0

02 Feb 16:06

Choose a tag to compare

Important

  • Package renamed to avex - The package is now available on PyPI as avex (previously representation-learning)
  • Repository is now public at https://github.com/earthspecies/avex
  • Install with pip install avex or uv add avex

Improvements

  • Improve documentation structure and clarity - streamlined README, consolidated detailed docs in docs/index.md
  • Add CODEOWNERS for PR approval requirements
  • Update GitHub workflows for build and publish with trusted publishing
  • Skip tests requiring esp_data to allow standalone package usage

Bug Fixes

  • Fix BEATs model: load config instead of default model
  • Fix transformers>=5 compatibility for EAT model

Documentation

  • Streamlined README.md to focus on quick start and essential info
  • Consolidated detailed documentation in docs/index.md
  • Updated CONTRIBUTING.md with clearer guidelines
  • Added list of official models to documentation

v0.4.3

29 Jan 13:41
e1917fb

Choose a tag to compare

Release 0.4.3

Important

Improvements

  • Add Hugging Face Hub integration for model hosting and downloading
  • Add Safetensor support for model weights
  • Add probing API to the library for training and evaluating probes
  • Add GCS support for YAML config file loading
  • Relax numpy, tensorflow, and torch version requirements for better compatibility
  • Add extra_config workaround to allow for outside-of-pydantic configuration
  • Update to esp-data 1.5.0

Bug Fixes

  • Fix EfficientNet float32 dtype mismatch in process_audio (auto-converts float64 input)
  • EfficientNet.forward now accepts optional padding_mask consistent with other models
  • Fix BirdNet/birdnetlib tensorflow embedding extraction returning constant embeddings
  • Fix classifier head loading issue
  • Fix EfficientNet checkpoint loading
  • Fix: don't create classification head when return_features_only=True (TensorFlow and PyTorch models)
  • Fix beats_naturelm model name reference to official esp_aves2_naturelm_audio_v1_beats

Documentation & Examples

  • Shift docs from README.md to docs
  • Improve documentation across modules
  • Update official models to use safetensors format hosted on Hugging Face
  • Fix example_05 to load EAT with return_features_only=True for embedding demo
  • Add fully fine-tuning results and plots
  • Fix and prune integration tests

Acknowledgements

Thanks to all the contributors who made this release possible:

v0.2.0

11 Dec 16:34
031259b

Choose a tag to compare

Version 0.2.0

⚙️ Improvements

  • return_features_only now returns unpooled features (preserving temporal/spatial information) in all model forward() methods
  • Separated API and development dependencies, making the package installable without esp-data for basic API usage
  • Created internal IO module to replace esp-data.io dependencies for API-only usage
  • Optimized test suite by using class-scoped fixtures to load models once, significantly reducing test execution time
  • Added deterministic embedding regression tests for BEATs, EAT-HF, EfficientNet, and AVES models
  • Fixed deprecated warnings: replaced torchvision 'pretrained' with weights parameter, updated TypedStorage usage, replaced weight_norm with parametrizations
  • Force torch and CUDA initialization to prevent CUDA becoming unavailable during model loading

🐛 Bug Fixes

  • Fixed operator precedence issue in test_beats_model.py where assert not sample_audio.grad is not None was changed to assert sample_audio.grad is None
  • Fixed model state isolation in test_base_model.py by resetting the model to eval mode after gradient propagation tests using try/finally block
  • Added missing .eval() calls in BEATs and EAT-HF deterministic regression tests to ensure models are in evaluation mode
  • Fixed BirdNet model shape conversion and tensor handling issues
  • Fixed sklearn metrics warnings by adding warning filter for "No positive class found"
  • Fixed torch.load weights_only warning by adding explicit weights_only=False parameter

📚 Documentation & Examples

  • Completely rewrote installation section in README with clear separation between API Usage and Development Usage
  • Updated examples to detect and display 3D/4D output shapes for unpooled features
  • Added detailed shape breakdowns and explanatory text about temporal/spatial information preservation

🧪 Testing

  • Optimized all model tests (BEATs, AVES, EAT-HF, EfficientNet, base model, probes) by using class-scoped fixtures, reducing test count by ~60% while maintaining coverage
  • Consolidated overlapping test files: merged probe, embedding, and projector tests into unified test suites
  • Pruned API integration tests from 12 to 3 tests (75% reduction) while maintaining coverage
  • Added autouse cleanup fixtures and setup_and_cleanup_hooks pattern for proper test isolation
  • Fixed PytestReturnNotNoneWarning by replacing return True/False with pytest.fail()

Version 0.1.1

⚙️ Improvements

  • Human-readable output for list_models() and describe_model() showing classifier head status
  • Simplified model loading API (removed num_classes=None requirement)
  • Updated esp-data to 1.3.0 (thanks, Gagan!)
  • Renamed load_class_mapping() to load_label_mapping()
  • list_models() now always prints table and returns human-readable dictionaries (removed print_table and return_raw parameters)

📚 Documentation & Examples

  • New Google Colab demo notebook (examples/colab_sl_beats_demo.ipynb)
  • Installation instructions for internal PyPI (esp-pypi) using uv
  • YAML configuration examples for custom ModelSpec definitions
  • Updated README with current API and file paths
  • Updated all example scripts to new API conventions