Selasa, 11 Maret 2025

Neural DSL v0.2.2 Release Notes

| Selasa, 11 Maret 2025

🚀 Major Changes

Fixed Parameter Parsing

Layer parameter handling has been significantly improved:

# Now correctly handles both styles:
Dense(64, "relu")     # Positional params
Dense(units=64, activation="relu") # Named params

Validation Enhancements

  • Strict positive integer validation for critical parameters
# These will now raise clear validation errors:
Conv2D(filters=-32)  # ERROR: filters must be positive
Dense(units=0)       # ERROR: units must be positive

Improved Error Messages

  • Added line/column information for better debugging
ERROR at line 4, column 32: Conv2D filters must be positive integer, got -32

🛠️ Technical Improvements

Layer Parameter Processing

  • Unified parameter merging across layers:
    • Dense
    • LSTM
    • GRUCell
    • GaussianNoise

Grammar Refinements

  • Resolved token conflicts between:
    • NUMBER
    • FLOAT
    • INT
  • Simplified param_style1 rules

HPO Support Updates

# Now correctly supports:
HPO(choice(32, 64, 128))  # Units choice
HPO(choice("relu", "tanh"))  # Activation choice

🐛 Bug Fixes

Layer-Specific Fixes

  • Fixed nested list flattening in GaussianNoise
  • Corrected STRING token regex for activation functions
  • Resolved VisitError wrapping issues

Macro System

  • Fixed parameter override logic during expansion
# Now correctly handles:
define MyBlock {
    Dense(64)
    Dropout(0.5)
}
MyBlock(units=128)  # Properly overrides Dense units

🚧 Known Issues

  1. PyTorch Support: Limited layer support (work in progress)
  2. Macro Stability: Potential parser issues with nested layer blocks
  3. HPO Limitations: log_range() requires explicit integer casting

📝 Migration Guide

Updating from v0.2.1

# Old style (might fail):
network MyNet {
    layers: Dense("64")  # String number
}

# New style (recommended):
network MyNet {
    layers: Dense(64)    # Integer number
}

🔜 Next Steps

  1. Complete PyTorch layer support
  2. Stabilize macro system
  3. Enhance HPO functionality

For full changelog, see CHANGELOG.md
For documentation, visit docs/


Related Posts

Tidak ada komentar:

Posting Komentar