8 comments

[ 0.24 ms ] story [ 34.0 ms ] thread
For context, usually you need to use something like scikit-learn for feature engineering; looks like Google want to manage some of that in-house.

There is also some overlap with Keras’s preprocessing tools (now native to TensorFlow), so there’s some nice synergy.

I'm not sure I'd choose the word synergy. Every time they move something from contrib into the main package, it seems to create a lot of redundancy. Now we have tf.keras.utils.to_categorical and tf.feature_column.categorical_column_with_vocabulary_list.
I also don't quite understand how Keras is integrated, it looks like a somewhat outdated copy/paste of files from the Keras repo.
The only difference I’ve seen is a function that converts Keras models into TensorFlow estimators.
To clarify: `tf.keras` is an implementation of the entire Keras API written from the ground-up in pure TensorFlow. The first benefit of that is a greater level of blending between non-Keras-TF workflows and TF-Keras workflows: for instance, layers from `tf.layers` and `tf.keras` are interchangeable in all use cases.

Additionally, this enables us to add TensorFlow-specific features that would be difficult to add to the multi-backend version of Keras, and to do performance optimizations that would otherwise be impossible.

Such features include support for Eager mode (dynamic graphs), support for TensorFlow Estimators, which enables distributed training and training on TPUs, and more to come.