#### Issue description
with ```import os``` a fully trained keras layers mode…l will save in .pb tensorflow format with the command
```model.save('KerasModel') ```
putting into the folder ```KerasModel``` a ```saved_model.pb``` file and also the folders ```variables``` and ```assets```. with related binary files.
Example Github code [here](https://github.com/hpssjellis/my-examples-for-quantum-computing/tree/a6ea9ef6007f0a71388fbe998e9de9eadf7b551d/rocksetta) based on qml/demonstration/tutorial_qnn_module_tf [here](https://github.com/PennyLaneAI/qml/blob/master/demonstrations/tutorial_qnn_module_tf.py)
If we insert a quantum layer in the keras model the files are not saved. Possibly it is an issue with extra options as the error messages suggest, but I think the qml code is causing a fault in the file structure.
Any suggestions, by the way a .h5 file can be saved but I think it is corrupted since I can't convert it into anything else.
Error messages
```
python3 tf-tutorial_qnn_module_tf.py
2020-11-30 22:40:35.291489: W tensorflow/stream_executor/platform/default/dso_loader.cc:59] Could not load dynamic library 'libcudart.so.10.1'; dlerror: libcudart.so.10.1: cannot open shared object file: No such file or directory
2020-11-30 22:40:35.291535: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
2020-11-30 22:40:37.258662: W tensorflow/stream_executor/platform/default/dso_loader.cc:59] Could not load dynamic library 'libcuda.so.1'; dlerror: libcuda.so.1: cannot open shared object file: No such file or directory
2020-11-30 22:40:37.258710: W tensorflow/stream_executor/cuda/cuda_driver.cc:312] failed call to cuInit: UNKNOWN ERROR (303)
2020-11-30 22:40:37.258740: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:156] kernel driver does not appear to be running on this host (ws-835a16b2-46f7-402c-9290-1a69f9673f9d): /proc/driver/nvidia/version does not exist
2020-11-30 22:40:37.259109: I tensorflow/core/platform/cpu_feature_guard.cc:142] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN)to use the following CPU instructions in performance-critical operations: AVX2 FMA
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
2020-11-30 22:40:37.274032: I tensorflow/core/platform/profile_utils/cpu_utils.cc:104] CPU Frequency: 2200000000 Hz
2020-11-30 22:40:37.276475: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x55db3f649bd0 initialized for platform Host (this does not guarantee that XLA will be used). Devices:
2020-11-30 22:40:37.276516: I tensorflow/compiler/xla/service/service.cc:176] StreamExecutor device (0): Host, Default Version
Epoch 1/2
30/30 - 19s - loss: 0.3244 - accuracy: 0.7667 - val_loss: 0.2635 - val_accuracy: 0.7800
Epoch 2/2
30/30 - 19s - loss: 0.2067 - accuracy: 0.8467 - val_loss: 0.2365 - val_accuracy: 0.7800
Traceback (most recent call last):
File "tf-tutorial_qnn_module_tf.py", line 166, in <module>
model.save('QuantumAndKerasModel')
File "/workspace/.pip-modules/lib/python3.7/site-packages/tensorflow/python/keras/engine/training.py", line 1979, in save
signatures, options)
File "/workspace/.pip-modules/lib/python3.7/site-packages/tensorflow/python/keras/saving/save.py", line 134, in save_model
signatures, options)
File "/workspace/.pip-modules/lib/python3.7/site-packages/tensorflow/python/keras/saving/saved_model/save.py", line 80, in save
save_lib.save(model, filepath, signatures, options)
File "/workspace/.pip-modules/lib/python3.7/site-packages/tensorflow/python/saved_model/save.py", line 976, in save
obj, export_dir, signatures, options, meta_graph_def)
File "/workspace/.pip-modules/lib/python3.7/site-packages/tensorflow/python/saved_model/save.py", line 1047, in _build_meta_graph
checkpoint_graph_view)
File "/workspace/.pip-modules/lib/python3.7/site-packages/tensorflow/python/saved_model/signature_serialization.py", line 75, in find_function_to_export
functions = saveable_view.list_functions(saveable_view.root)
File "/workspace/.pip-modules/lib/python3.7/site-packages/tensorflow/python/saved_model/save.py", line 145, in list_functions
self._serialization_cache)
File "/workspace/.pip-modules/lib/python3.7/site-packages/tensorflow/python/keras/engine/training.py", line 2590, in _list_functions_for_serialization
Model, self)._list_functions_for_serialization(serialization_cache)
File "/workspace/.pip-modules/lib/python3.7/site-packages/tensorflow/python/keras/engine/base_layer.py", line 3019, in _list_functions_for_serialization
.list_functions_for_serialization(serialization_cache))
File "/workspace/.pip-modules/lib/python3.7/site-packages/tensorflow/python/keras/saving/saved_model/base_serialization.py", line 87, in list_functions_for_serialization
fns = self.functions_to_serialize(serialization_cache)
File "/workspace/.pip-modules/lib/python3.7/site-packages/tensorflow/python/keras/saving/saved_model/layer_serialization.py", line 79, in functions_to_serialize
serialization_cache).functions_to_serialize)
File "/workspace/.pip-modules/lib/python3.7/site-packages/tensorflow/python/keras/saving/saved_model/layer_serialization.py", line 95, in _get_serialized_attributes
serialization_cache)
File "/workspace/.pip-modules/lib/python3.7/site-packages/tensorflow/python/keras/saving/saved_model/model_serialization.py", line 51, in _get_serialized_attributes_internal
default_signature = save_impl.default_save_signature(self.obj)
File "/workspace/.pip-modules/lib/python3.7/site-packages/tensorflow/python/keras/saving/saved_model/save_impl.py", line 205, in default_save_signature
fn.get_concrete_function()
File "/workspace/.pip-modules/lib/python3.7/site-packages/tensorflow/python/eager/def_function.py", line 1167, in get_concrete_function
concrete = self._get_concrete_function_garbage_collected(*args, **kwargs)
File "/workspace/.pip-modules/lib/python3.7/site-packages/tensorflow/python/eager/def_function.py", line 1073, in _get_concrete_function_garbage_collected
self._initialize(args, kwargs, add_initializers_to=initializers)
File "/workspace/.pip-modules/lib/python3.7/site-packages/tensorflow/python/eager/def_function.py", line 697, in _initialize
*args, **kwds))
File "/workspace/.pip-modules/lib/python3.7/site-packages/tensorflow/python/eager/function.py", line 2855, in _get_concrete_function_internal_garbage_collected
graph_function, _, _ = self._maybe_define_function(args, kwargs)
File "/workspace/.pip-modules/lib/python3.7/site-packages/tensorflow/python/eager/function.py", line 3213, in _maybe_define_function
graph_function = self._create_graph_function(args, kwargs)
File "/workspace/.pip-modules/lib/python3.7/site-packages/tensorflow/python/eager/function.py", line 3075, in _create_graph_function
capture_by_value=self._capture_by_value),
File "/workspace/.pip-modules/lib/python3.7/site-packages/tensorflow/python/framework/func_graph.py", line 986, in func_graph_from_py_func
func_outputs = python_func(*func_args, **func_kwargs)
File "/workspace/.pip-modules/lib/python3.7/site-packages/tensorflow/python/eager/def_function.py", line 600, in wrapped_fn
return weak_wrapped_fn().__wrapped__(*args, **kwds)
File "/workspace/.pip-modules/lib/python3.7/site-packages/tensorflow/python/keras/saving/saving_utils.py", line 134, in _wrapped_model
outputs = model(inputs, training=False)
File "/workspace/.pip-modules/lib/python3.7/site-packages/tensorflow/python/keras/engine/base_layer.py", line 985, in __call__
outputs = call_fn(inputs, *args, **kwargs)
File "/workspace/.pip-modules/lib/python3.7/site-packages/tensorflow/python/keras/engine/sequential.py", line 372, in call
return super(Sequential, self).call(inputs, training=training, mask=mask)
File "/workspace/.pip-modules/lib/python3.7/site-packages/tensorflow/python/keras/engine/functional.py", line 386, in call
inputs, training=training, mask=mask)
File "/workspace/.pip-modules/lib/python3.7/site-packages/tensorflow/python/keras/engine/functional.py", line 508, in _run_internal_graph
outputs = node.layer(*args, **kwargs)
File "/workspace/.pip-modules/lib/python3.7/site-packages/tensorflow/python/keras/engine/base_layer.py", line 985, in __call__
outputs = call_fn(inputs, *args, **kwargs)
File "/workspace/.pip-modules/lib/python3.7/site-packages/tensorflow/python/autograph/impl/api.py", line 302, in wrapper
return func(*args, **kwargs)
File "/workspace/.pip-modules/lib/python3.7/site-packages/pennylane/qnn/keras.py", line 311, in call
for x in inputs: # iterate over batch
File "/workspace/.pip-modules/lib/python3.7/site-packages/tensorflow/python/framework/ops.py", line 503, in __iter__
self._disallow_iteration()
File "/workspace/.pip-modules/lib/python3.7/site-packages/tensorflow/python/framework/ops.py", line 494, in _disallow_iteration
self._disallow_when_autograph_disabled("iterating over `tf.Tensor`")
File "/workspace/.pip-modules/lib/python3.7/site-packages/tensorflow/python/framework/ops.py", line 469, in _disallow_when_autograph_disabled
" Try decorating it directly with @tf.function.".format(task))
tensorflow.python.framework.errors_impl.OperatorNotAllowedInGraphError: iterating over `tf.Tensor` is not allowed: AutoGraph is disabled in this function. Try decorating it directly with @tf.function.
```