TheAlgorithms / Python

All Algorithms implemented in Python
https://thealgorithms.github.io/Python/
MIT License
192.28k stars 45.37k forks source link

Feature Request: Add LSTM Algorithm to Neural Network Algorithms #12069

Open LEVIII007 opened 4 days ago

LEVIII007 commented 4 days ago

Feature description

Add LSTM Algorithm to Neural Network Algorithms

Feature Description:

I would like to propose adding an LSTM (Long Short-Term Memory) algorithm to the existing neural network algorithms in the repository. LSTMs are a type of recurrent neural network (RNN) that excel in handling sequential and time-series data, making them particularly valuable for tasks such as language modeling, text generation, and time-series forecasting.

Proposed Improvements:

  1. Implementation of LSTM: Develop a comprehensive LSTM class that includes essential functionalities such as:

    • Forward propagation through LSTM layers.
    • Backpropagation through time (BPTT) for training.
    • Methods for saving and loading the model.
    • Support for various activation functions (sigmoid, tanh, softmax).
  2. Example Usage: Include example usage code demonstrating how to train the LSTM on a dataset, such as predicting the next character in Shakespeare's text.

  3. Documentation: Provide detailed documentation on the LSTM algorithm's implementation, explaining its structure, hyperparameters, and training process.

  4. Unit Tests: Implement unit tests to ensure the correctness and robustness of the LSTM functionality.

Rationale:

Adding LSTM capabilities will enhance the versatility of the neural network algorithms available in this repository, allowing users to tackle a wider range of problems involving sequential data. Given the growing importance of time-series analysis and natural language processing, this addition would significantly benefit the community.

PrakharJain1509 commented 3 days ago

@LEVIII007 Should I create a separate file (.py) for lstm and also if I resolve this can you update that PR with hactober-accepted? (like if that is possible).

LEVIII007 commented 3 days ago

I have created a pull request addressing this issue. You can view it here: Link to PR #12082