ptuls / tabnet-modified

Modification of TabNet as suggested in the Medium article, "The Unreasonable Ineffectiveness of Deep Learning on Tabular Data"
60 stars 12 forks source link

Unable to execute run.sh (package incompatibilities?) #4

Open francescosaracco opened 3 years ago

francescosaracco commented 3 years ago

Hi @ptuls! First of all, thanks for your interesting work! I got here from your Medium article, which I found very clear and appealing. I tried to reproduce the training and testing on the Covertype dataset as explained in the README, but I got into some problems, which I suppose are due to package incompatibilities (note: I'm running the code on a Google Colab instance). In fact, when running run.sh I get the following error:

ERROR: Cannot install -r requirements.txt (line 1) and numpy==1.15.1 because these package versions have conflicting dependencies.

The conflict is caused by:
    The user requested numpy==1.15.1
    tensorflow-gpu 1.15.4 depends on numpy<1.19.0 and >=1.16.0

To fix this you could try to:
1. loosen the range of package versions you've specified
2. remove package versions to allow pip attempt to solve the dependency conflict

ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/user_guide/#fixing-conflicting-dependencies

I tried to solve the incompatibility with the closest numpy version possible, namely 1.16.0, but its installations causes a lot more incompatibilities:

ERROR: xarray 0.18.2 has requirement numpy>=1.17, but you'll have numpy 1.16.0 which is incompatible.
ERROR: tensorflow 2.5.0 has requirement gast==0.4.0, but you'll have gast 0.2.2 which is incompatible.
ERROR: tensorflow 2.5.0 has requirement numpy~=1.19.2, but you'll have numpy 1.16.0 which is incompatible.
ERROR: tensorflow 2.5.0 has requirement tensorboard~=2.5, but you'll have tensorboard 1.15.0 which is incompatible.
ERROR: tensorflow 2.5.0 has requirement tensorflow-estimator<2.6.0,>=2.5.0rc0, but you'll have tensorflow-estimator 1.15.1 which is incompatible.
ERROR: tensorflow-probability 0.12.1 has requirement gast>=0.3.2, but you'll have gast 0.2.2 which is incompatible.
ERROR: pyerfa 2.0.0 has requirement numpy>=1.17, but you'll have numpy 1.16.0 which is incompatible.
ERROR: pyarrow 3.0.0 has requirement numpy>=1.16.6, but you'll have numpy 1.16.0 which is incompatible.
ERROR: kapre 0.3.5 has requirement numpy>=1.18.5, but you'll have numpy 1.16.0 which is incompatible.
ERROR: datascience 0.10.6 has requirement folium==0.2.1, but you'll have folium 0.8.3 which is incompatible.
ERROR: astropy 4.2.1 has requirement numpy>=1.17, but you'll have numpy 1.16.0 which is incompatible.
ERROR: albumentations 0.1.12 has requirement imgaug<0.2.7,>=0.2.5, but you'll have imgaug 0.2.9 which is incompatible.

Nevertheless, when executing <train_classifier.py> the error I get is related to a utility function:

Traceback (most recent call last):
  File "/usr/lib/python3.7/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/lib/python3.7/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/gdrive/My Drive/tabnetModified/tabnet-modified/train_classifier.py", line 176, in <module>
    app.run(main)
  File "/usr/local/lib/python3.7/dist-packages/absl/app.py", line 303, in run
    _run_main(main, args)
  File "/usr/local/lib/python3.7/dist-packages/absl/app.py", line 251, in _run_main
    sys.exit(main(argv))
  File "/gdrive/My Drive/tabnetModified/tabnet-modified/train_classifier.py", line 38, in main
    INT_COLUMNS, BOOL_COLUMNS, FLOAT_COLUMNS, STR_COLUMNS)
TypeError: get_columns() missing 1 required positional argument: 'str_columns'

Forgive me for the wall of text, I tried to be as complete as possible in the problem description. Maybe I'm doing something wrong, in which case I ask if you could kindly give me a hint.

Thank you!

ptuls commented 3 years ago

Hi there, thanks for the kind words.

It seems in the second set of logs you've posted, there's a dependency on TensorFlow 2.5.0. I'm a little confused about this. I should note that the code here is not TensorFlow 2 compatible unfortunately.

As for the missing argument issue, I've put in a fix. I accidentally omitted an argument, thank you for flagging.

ptuls commented 3 years ago

I've made some new changes based on feedback from someone else. Try fetching and running it again.