nasa / progpy

The NASA Prognostic Python Packages is a Python framework focused on defining and building models and algorit for prognostics (computation of remaining useful life) of engineering systems, and provides a set of models and algorithms for select components developed within this framework, suitable for use in prognostic applications.
https://nasa.github.io/progpy/
Other
60 stars 8 forks source link

152 make tensor flow optional #154

Closed teubert closed 2 months ago

teubert commented 3 months ago

This PR accomplishes 2 things

  1. Makes installing tensor flow optional using [datadriven] option, and
  2. Updates configuration from old setup.py to new pyproject.toml

Now to install with tensorflow you must use the following command pip install progpy[datadriven] or pip install '.[datadriven]' (for local copy)

Also updated LSTM to give a more descriptive error if tensor flow isn't installed and updated documentation of LSTM to add note.

How to test:

github-actions[bot] commented 3 months ago

Thank you for opening this PR. Each PR into dev requires a code review. For the code review, look at the following:

teubert commented 3 months ago

Unfortunately, the way things are setup the new test config will not take effect until this is merged. So surrogates and data tests will fail and have to be tested manually

jason-watkins commented 3 months ago

Seems to mostly be working, but I do get this error on (I think) all of the tensorflow tests:

======================================================================
ERROR: test_lstm_simple (tests.test_data_model.TestDataModel)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/jason/code/nasa/progpy/tests/test_data_model.py", line 127, in test_lstm_simple
    m = self._test_simple_case(LSTMStateTransitionModel, window=5, epochs=20, max_error=3)
  File "/home/jason/code/nasa/progpy/tests/test_data_model.py", line 48, in _test_simple_case
    m2 = DataModelType.from_data(
  File "/home/jason/code/nasa/progpy/src/progpy/data_models/lstm_model.py", line 598, in from_data
    history = model.fit(
  File "/home/jason/code/nasa/progpy_venv/lib/python3.10/site-packages/keras/src/utils/traceback_utils.py", line 122, in error_handler
    raise e.with_traceback(filtered_tb) from None
  File "/home/jason/code/nasa/progpy_venv/lib/python3.10/site-packages/keras/src/utils/traceback_utils.py", line 117, in error_handler
    return fn(*args, **kwargs)
TypeError: TensorFlowTrainer.fit() got an unexpected keyword argument 'workers'

Could be related to the fact that I am running this in Windows WSL?

teubert commented 3 months ago

Seems to mostly be working, but I do get this error on (I think) all of the tensorflow tests:


======================================================================

ERROR: test_lstm_simple (tests.test_data_model.TestDataModel)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "/home/jason/code/nasa/progpy/tests/test_data_model.py", line 127, in test_lstm_simple

    m = self._test_simple_case(LSTMStateTransitionModel, window=5, epochs=20, max_error=3)

  File "/home/jason/code/nasa/progpy/tests/test_data_model.py", line 48, in _test_simple_case

    m2 = DataModelType.from_data(

  File "/home/jason/code/nasa/progpy/src/progpy/data_models/lstm_model.py", line 598, in from_data

    history = model.fit(

  File "/home/jason/code/nasa/progpy_venv/lib/python3.10/site-packages/keras/src/utils/traceback_utils.py", line 122, in error_handler

    raise e.with_traceback(filtered_tb) from None

  File "/home/jason/code/nasa/progpy_venv/lib/python3.10/site-packages/keras/src/utils/traceback_utils.py", line 117, in error_handler

    return fn(*args, **kwargs)

TypeError: TensorFlowTrainer.fit() got an unexpected keyword argument 'workers'

Could be related to the fact that I am running this in Windows WSL?

Well that's frustrating. It should be working on windows. But tensorflow is VERY sensitive to os and version. I'll open a new issue to investigate that.

I'll also be updating to use keras 3 for this release. That might fix this issue too. But I'll open a bug report to track it