I'm getting a problem when I want to save my keras model using the model.save method :
IndexError: list index out of range Here is the model :
### Model ### # 3 inputs inputA = tf.keras.layers.Input(shape=(100,)) inputB = tf.keras.layers.Input(shape=(100,)) inputC = tf.keras.layers.Input(shape=(4,)) # First branch x = tf.keras.models.Sequential()(inputA) x = tf.keras.layers.Dense(350, activation="relu")(x) x = tf.keras.layers.Dropout(0.2)(x) x = tf.keras.layers.Dense(250, activation="relu")(x) x = tf.keras.layers.Dropout(0.2)(x) x = tf.keras.layers.Dense(150, activation="relu")(x) x = tf.keras.layers.Dropout(0.2)(x) x = tf.keras.layers.Dense(100, activation="relu")(x) x = tf.keras.layers.Dropout(0.2)(x) x = tf.keras.layers.Dense(50, activation="relu")(x) x = tf.keras.layers.Dropout(0.2)(x) x = tf.keras.layers.Dense(25, activation="relu")(x) x = tf.keras.layers.Dropout(0.2)(x) x = tf.keras.layers.Dense(10, activation="relu")(x) x = tf.keras.layers.Dropout(0.2)(x) x = tf.keras.layers.Dense(1, activation="sigmoid")(x) x = tf.keras.models.Model(inputs=inputA, outputs=x) # Second branch y = tf.keras.models.Sequential()(inputB) y = tf.keras.layers.Dense(350, activation="relu")(y) y = tf.keras.layers.Dropout(0.2)(y) y = tf.keras.layers.Dense(250, activation="relu")(y) y = tf.keras.layers.Dropout(0.2)(y) y = tf.keras.layers.Dense(150, activation="relu")(y) y = tf.keras.layers.Dropout(0.2)(y) y = tf.keras.layers.Dense(100, activation="relu")(y) y = tf.keras.layers.Dropout(0.2)(y) y = tf.keras.layers.Dense(50, activation="relu")(y) y = tf.keras.layers.Dropout(0.2)(y) y = tf.keras.layers.Dense(25, activation="relu")(y) y = tf.keras.layers.Dropout(0.2)(y) y = tf.keras.layers.Dense(10, activation="relu")(y) y = tf.keras.layers.Dropout(0.2)(y) y = tf.keras.layers.Dense(1, activation="sigmoid")(y) y = tf.keras.models.Model(inputs=inputB, outputs=y) # Third branch w = tf.keras.models.Sequential()(inputC) w = tf.keras.layers.Dense(200, activation="relu")(w) w = tf.keras.layers.Dropout(0.2)(w) w = tf.keras.layers.Dense(200, activation="relu")(w) w = tf.keras.layers.Dropout(0.2)(w) w = tf.keras.layers.Dense(150, activation="relu")(w) w = tf.keras.layers.Dropout(0.2)(w) w = tf.keras.layers.Dense(100, activation="relu")(w) w = tf.keras.layers.Dropout(0.2)(w) w = tf.keras.layers.Dense(50, activation="relu")(w) w = tf.keras.layers.Dropout(0.2)(w) w = tf.keras.layers.Dense(1, activation="sigmoid")(w) w = tf.keras.models.Model(inputs=inputC, outputs=w) # Concatenate outputs combined = tf.keras.layers.Concatenate(axis=1)([x.output, y.output, w.output]) # Last branch with combined z = tf.keras.layers.Dense(200, activation="relu")(combined) z = tf.keras.layers.Dropout(0.2)(z) z = tf.keras.layers.Dense(200, activation="relu")(z) z = tf.keras.layers.Dropout(0.2)(z) z = tf.keras.layers.Dense(150, activation="relu")(z) z = tf.keras.layers.Dropout(0.2)(z) z = tf.keras.layers.Dense(100, activation="relu")(z) z = tf.keras.layers.Dropout(0.2)(z) z = tf.keras.layers.Dense(50, activation="relu")(z) z = tf.keras.layers.Dropout(0.2)(z) z = tf.keras.layers.Dense(25, activation="relu")(z) z = tf.keras.layers.Dropout(0.2)(z) z = tf.keras.layers.Dense(1, activation="sigmoid")(z) #softmax ou sigmoid model = tf.keras.models.Model(inputs=[x.input, y.input, w.input], outputs=z) model.compile(optimizer='adam', loss='binary_crossentropy') model.fit(x=[X1, X2, X3], y=y1, batch_size=128, epochs=nb_epoch, verbose=2) # Evaluation on test set ... # Sauvegarde du model model.save("path/to/my/model/location") Here is the complete error :
Traceback (most recent call last): File "reseauNeurone.py", line 230, in MLP model.save("/Users/x/Documents/Cours/DI5/S9/Projet IA/Model") File "/Users/x/opt/anaconda3/lib/python3.7/site-packages/tensorflow/python/keras/engine/training.py", line 1979, in save signatures, options) File "/Users/x/opt/anaconda3/lib/python3.7/site-packages/tensorflow/python/keras/saving/save.py", line 134, in save_model signatures, options) File "/Users/x/opt/anaconda3/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 "/Users/x/opt/anaconda3/lib/python3.7/site-packages/tensorflow/python/saved_model/save.py", line 976, in save obj, export_dir, signatures, options, meta_graph_def) File "/Users/x/opt/anaconda3/lib/python3.7/site-packages/tensorflow/python/saved_model/save.py", line 1076, in _build_meta_graph asset_info.asset_index) File "/Users/x/opt/anaconda3/lib/python3.7/site-packages/tensorflow/python/saved_model/save.py", line 721, in _serialize_object_graph saveable_view.function_name_map) File "/Users/x/opt/anaconda3/lib/python3.7/site-packages/tensorflow/python/saved_model/save.py", line 761, in _write_object_proto metadata=obj._tracking_metadata) File "/Users/x/opt/anaconda3/lib/python3.7/site-packages/tensorflow/python/keras/engine/base_layer.py", line 3011, in _tracking_metadata return self._trackable_saved_model_saver.tracking_metadata File "/Users/x/opt/anaconda3/lib/python3.7/site-packages/tensorflow/python/keras/saving/saved_model/base_serialization.py", line 54, in tracking_metadata return json_utils.Encoder().encode(self.python_properties) File "/Users/x/opt/anaconda3/lib/python3.7/site-packages/tensorflow/python/keras/saving/saved_model/layer_serialization.py", line 41, in python_properties return self._python_properties_internal() File "/Users/x/opt/anaconda3/lib/python3.7/site-packages/tensorflow/python/keras/saving/saved_model/model_serialization.py", line 35, in _python_properties_internal metadata = super(ModelSavedModelSaver, self)._python_properties_internal() File "/Users/x/opt/anaconda3/lib/python3.7/site-packages/tensorflow/python/keras/saving/saved_model/layer_serialization.py", line 59, in _python_properties_internal metadata.update(get_config(self.obj)) File "/Users/x/opt/anaconda3/lib/python3.7/site-packages/tensorflow/python/keras/saving/saved_model/layer_serialization.py", line 118, in get_config config = generic_utils.serialize_keras_object(obj)['config'] File "/Users/x/opt/anaconda3/lib/python3.7/site-packages/tensorflow/python/keras/utils/generic_utils.py", line 245, in serialize_keras_object config = instance.get_config() File "/Users/x/opt/anaconda3/lib/python3.7/site-packages/tensorflow/python/keras/engine/functional.py", line 598, in get_config return copy.deepcopy(get_network_config(self)) File "/Users/x/opt/anaconda3/lib/python3.7/site-packages/tensorflow/python/keras/engine/functional.py", line 1261, in get_network_config kept_nodes = 1 if _should_skip_first_node(layer) else 0 File "/Users/x/opt/anaconda3/lib/python3.7/site-packages/tensorflow/python/keras/engine/functional.py", line 1033, in _should_skip_first_node isinstance(layer._layers[0], input_layer_module.InputLayer)) IndexError: list index out of range I have also tried using model.get_config or using json to save the model, but the error remains the same.
Does anyone know how to fix this problem and therefore how to successfully save the model ? Thanks.
https://stackoverflow.com/questions/65552663/keras-list-index-out-of-range-when-saving-a-model January 04, 2021 at 01:12AM
没有评论:
发表评论