Reputation: 79
I've made a audio detection model and saved it as h5 file. But when I load model and parameters, the error occurred.
I tried restarting spyder and saving model once again, but nothing changed.
This is the line that makes this 'TypeError'
model = load_model('.\\Data\\Keras_Model\\(19.07.30).h5')
TypeError: tuple indices must be integers or slices, not list
Here is my traceback
File "<ipython-input-32-5bad2284b610>", line 1, in <module>
runfile('C:/Project/Test.py', wdir='C:/Project')
File "C:\Users\DSP\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 678, in runfile
execfile(filename, namespace)
File "C:\Users\DSP\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 106, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "C:/Project/Test.py", line 15, in <module>
model = load_model('.\\Data\\Keras_Model\\(19.07.30).h5')
File "C:\Users\DSP\Anaconda3\lib\site-packages\keras\models.py", line 264, in load_model
model = model_from_config(model_config, custom_objects=custom_objects)
File "C:\Users\DSP\Anaconda3\lib\site-packages\keras\models.py", line 341, in model_from_config
return layer_module.deserialize(config, custom_objects=custom_objects)
File "C:\Users\DSP\Anaconda3\lib\site-packages\keras\layers\__init__.py", line 55, in deserialize
printable_module_name='layer')
File "C:\Users\DSP\Anaconda3\lib\site-packages\keras\utils\generic_utils.py", line 144, in deserialize_keras_object
list(custom_objects.items())))
File "C:\Users\DSP\Anaconda3\lib\site-packages\keras\engine\topology.py", line 2535, in from_config
process_node(layer, node_data)
File "C:\Users\DSP\Anaconda3\lib\site-packages\keras\engine\topology.py", line 2492, in process_node
layer(input_tensors[0], **kwargs)
File "C:\Users\DSP\Anaconda3\lib\site-packages\keras\engine\topology.py", line 592, in __call__
self.build(input_shapes[0])
File "C:\Users\DSP\Anaconda3\lib\site-packages\keras\layers\normalization.py", line 92, in build
dim = input_shape[self.axis]
TypeError: tuple indices must be integers or slices, not list
This is my model
Input_Tr = Input(shape=(600, 128, 1), dtype = 'float', name = 'Input_Tr')
conv_layer1 = Conv2D(32, kernel_size = 3, strides = 1, padding = 'SAME')(Input_Tr)
batch_layer1 = BatchNormalization(axis=-1)(conv_layer1)
conv_layer1_out = Activation('relu')(batch_layer1)
pooling_layer1 = MaxPooling2D((1, 4))(conv_layer1_out)
dropout_layer1 = Dropout(0.5)(pooling_layer1)
conv_layer2 = Conv2D(64, kernel_size = 3, strides = 1, padding = 'SAME')(dropout_layer1)
batch_layer2 = BatchNormalization(axis=-1)(conv_layer2)
conv_layer2_out = Activation('relu')(batch_layer2)
pooling_layer2 = MaxPooling2D((1, 4))(conv_layer2_out)
dropout_layer2 = Dropout(0.5)(pooling_layer2)
reshape_layer3 = Reshape((600, 64*8))(dropout_layer2)
bidir_layer3 = Bidirectional(GRU(64, return_sequences = True, activation = 'tanh'))(reshape_layer3)
output = TimeDistributed(Dense(1, activation = 'sigmoid'))(bidir_layer3)
model = Model(inputs = [Input_Tr], outputs = [output])
adam = Adam(lr = 0.01, beta_1=0.9, beta_2=0.999,decay=0.0)
model.compile(loss="binary_crossentropy", optimizer = adam, metrics=["accuracy"])
model.fit(x_train, x_label, epochs = 30, batch_size = 30, validation_split = 0.1)
model.summary()
loss_and_metrics = model.evaluate(y_train, y_label, batch_size = 15)
print("evaluation Result")
print(loss_and_metrics)
model.save('.\\Data\\Keras_Model\\(19.07.30).h5')
What should I do in this situation.
Upvotes: 1
Views: 7035
Reputation: 56357
This could happen because you trained the model using tf.keras
but you are not loading it with the standalone keras
, both modules aren't compatible and you should only use one of them for your whole pipeline.
Upvotes: 3