Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TF-DF Compatibility with Keras 3? #210

Open
rlcauvin opened this issue Feb 17, 2024 · 6 comments
Open

TF-DF Compatibility with Keras 3? #210

rlcauvin opened this issue Feb 17, 2024 · 6 comments

Comments

@rlcauvin
Copy link

According to the known issues, "TF-DF is not compatible with Keras 3 at this time." Are efforts underway to update TF-DF to be compatible with Keras 3?

@rstz
Copy link
Collaborator

rstz commented Feb 19, 2024

Yes, we are planning to make TF-DF compatible with Keras 3, but there is no timeline yet, since it might be a non-trivial change.

@woodwj
Copy link

woodwj commented Mar 22, 2024

Ive been trying and failing to tune hyperameters for tfdf.CartModels in line with the google developer course practice https://developers.google.com/machine-learning/decision-forests/practice

but i get a FatalTypeError after the keras_tuner builds the hypermodel as its not a keras.model.Model instance.

My guess is that now keras_tuner uses keras 3 (Release v1.4.6), it doesnt recognise these as keras modes?

Heres a notebook replicating the issue
https://colab.research.google.com/drive/183uPNtxGXn7TI8c9CDbrJ3sD0KWr-3ms#scrollTo=uO8SKW48MVPS

@rstz
Copy link
Collaborator

rstz commented Mar 22, 2024

Hi, looks like we have to update this class - thank you for notifying us. Very likely, you only need to add

import os
# Keep using Keras 2
os.environ['TF_USE_LEGACY_KERAS'] = '1'

at the top of the colab (note that I cannot access yours, since it's not shared with the world).

@woodwj
Copy link

woodwj commented Mar 22, 2024

Thank you for the quick reply, , ive updated access to the notebook, with that potential fix unfortunately not working https://colab.research.google.com/drive/183uPNtxGXn7TI8c9CDbrJ3sD0KWr-3ms?usp=sharing

@woodwj
Copy link

woodwj commented Mar 22, 2024

Fixed with versioning keras_tuner AND setting legacy env variable. Il share this feedback this the course.

Im not really familiar with keras, but maybe the backward compatibility introduced here doesn't get the right backend? im not quite sure where to open a bug report, is a keras_tuner or tfdf issue?
keras_tuner 1.4.5 -> 1.4.6 [https://github.com/keras-team/keras-tuner/compare/v1.4.5...v1.4.6]

import os; os.environ['TF_USE_LEGACY_KERAS'] = '1' # Keep using Keras 2
!pip install keras_tuner==1.4.5 # use legacy keras_tuner

@achoum
Copy link
Collaborator

achoum commented Apr 16, 2024

Sorry to hear about your issue. Let me explain the situation and the available solutions.

I hope this helps.

Keras in TF

Keras 3 is a rewrite from scratch of Keras 2. The previous version of Keras, previously called keras in PyPI, was renamed to tf_keras. The pip package keras now points to Keras 3. TensorFlow includes a copy of Keras i.e. tf.keras. Up to TensorFlow 2.15, tf.keras was an alias to Keras 2. Starting with TensorFlow 2.16, tf.keras is an alias to Keras 3.

There are two ways to force TensorFlow to use Keras 2:

  • Use TensorFlow 2.15.
  • With TensorFlow >=2.16, define the global variable TF_USE_LEGACY_KERAS=1 before any import.
  • Call the tf_keras PyPI package directly.

TF-DF with Keras

TensorFlow Decision Forests is, at the moment, only compatible with Keras 2 i.e. TF-DF is not compatible with Keras 3.

  • Versions of TF-DF <= 1.8 use the version of Keras provided by TensorFlow. You have to use the TF_USE_LEGACY_KERAS trick if using TF>=2.16.

  • Version of TF-DF >=1.9 uses tf_keras directly and works out of the box for TensorFlow >=2.16.

YDF

While we make TF-DF compatible with Keras 3, you can use the YDF library.
YDF is Google's new decision forest library. TF-DF and YDF use the same implementations but YDF has more features.
Importantly, YDF is compatible with Keras 2, Keras 3, and soon JAX.
Here is an example: https://ydf.readthedocs.io/en/latest/tutorial/compose_with_tf

The TF-DF and YDF APIs relatively similar. A few functions have changed names. You can learn about those difference here: https://ydf.readthedocs.io/en/latest/tutorial/migrating_to_ydf/

Tuner

YDF contains a specialized tuner which will be faster than Keras Tuner when using decision forests. See: https://ydf.readthedocs.io/en/latest/tutorial/tuning/

Class

The decision forest practice class is currently being updated to use YDF.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants