I am working on some keras code but seems it is better to use
tensorflow.keras for some reasons. So my problem is how to port
tensorflow.keras.* quick and easy, assuming Tensorflow 2 of course.
Surely, this is never error-free replacement. For example,
keras.optimizers.adam() will become
uppercase “A”, and
keras.initializers.normal() is renamed to
tensorflow.keras.initializers.RandomNormal(). But put these aside, how can I
do a quick port with minimal code change?
One easy way to do is to scan all Python code, and look for
then replace all these into
from tensorflow import keras
and this is done. However, this will need to scan through all code. This is a quick trick, works only if you execute this before any such keras code is imported:
import sys import tensorflow for _name in [x for x in sys.modules.keys() if x.startswith("tensorflow.keras")]: sys.modules[_name[len("tensorflow."):]] = sys.modules[_name]
This is to hack the python import system to manipulate its memory of modules
keras.*. After this is done,
keras.utils will be identical to
tensorflow.keras.utils as Python would remember it. If you happen to have a
line of code
import keras.utils executed afterwards, via another module for
example, it will just expose it to the namespace without actually loading the
module, as the system would believe it has already been loaded.