I'm running the code below, and it works perfectly if TensorFlow is installed without GPU. But if installed with GPU, I get a FileNotFound error when I try to load the object.
I tried also with joblib and pickle directly, and I always get the same error.
Any help will be greatly appreciated.
import tensorflow as tf
import dill
def Generator():
z_dim = 60
FEATURES_LIST = ["aaa", "bbb", "ccc" ]
ME_FEATURES_LIST = ["ddd", "eee", "fff" ]
NUM_FEATURES = len(FEATURES_LIST)
NUM_ME_FEATURES = len(ME_FEATURES_LIST)
z = tf.keras.layers.Input(shape=(z_dim,), dtype='float32')
y = tf.keras.layers.Input(shape=(NUM_ME_FEATURES,), dtype='float32')
tr = tf.keras.layers.Input(shape=(1,), dtype='bool')
x = tf.keras.layers.concatenate([z, y])
x = tf.keras.layers.Dense(z_dim * NUM_ME_FEATURES, activation="relu")(x)
out = tf.keras.layers.Dense(NUM_FEATURES, activation='sigmoid')(x)
model = tf.keras.Model(inputs=[z, y, tr], outputs=(out, y))
return model
G = Generator()
with open("dill_functional", 'wb') as file:
dill.dump(G, file)
with open("dill_functional", 'rb') as file:
G = dill.load(file) # <--- error here
print(str(G))
C:\Users\igor-.cloned\gan> python .\dill_test.py 2023-02-09 22:42:28.379108: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX AVX2 To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
2023-02-09 22:42:29.759547: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1616] Created device /job:localhost/replica:0/task:0/device:GPU:0 with 9426 MB memory: -> device: 0, name: NVIDIA GeForce RTX 3080 Ti, pci bus id: 0000:01:00.0, compute capability: 8.6
WARNING:tensorflow:Compiled the loaded model, but the compiled metrics have yet to be built.
model.compile_metrics
will be empty until you train or evaluate the model.Traceback (most recent call last): File "C:\Users\igor-\.cloned\gan\dill_test.py", line 32, in <module> G = dill.load(file) File "C:\Users\igor-\anaconda3\envs\ai\lib\site-packages\dill\_dill.py", line 272, in load return Unpickler(file, ignore=ignore, **kwds).load() File "C:\Users\igor-\anaconda3\envs\ai\lib\site-packages\dill\_dill.py", line 419, in load obj = StockUnpickler.load(self) File "C:\Users\igor-\anaconda3\envs\ai\lib\site-packages\keras\saving\pickle_utils.py", line 47, in deserialize_model_from_bytecode model = save_module.load_model(temp_dir) File "C:\Users\igor-\anaconda3\envs\ai\lib\site-packages\keras\utils\traceback_utils.py", line 70, in error_handler raise e.with_traceback(filtered_tb) from None File "C:\Users\igor-\anaconda3\envs\ai\lib\site-packages\tensorflow\python\saved_model\load.py", line 933, in load_partial raise FileNotFoundError( FileNotFoundError: Unsuccessful TensorSliceReader constructor: Failed to find any matching files for ram://fc47ea82-4f6b-4736-9394-980cc1f14358/variables/variables
You may be trying to load on a different device from the computational device. Consider setting the
experimental_io_device
option intf.saved_model.LoadOptions
to the io_device such as '/job:localhost'.