In [1]:
from keras.models import Sequential
from keras.layers import Dense, Dropout, Flatten
from keras.layers.convolutional import Conv3D
from keras.layers.convolutional_recurrent import ConvLSTM2D
from keras.layers.normalization import BatchNormalization
import numpy as np
import pylab as plt
from read_dataset import read_mfcc_10frame_with_train_test
from read_saved_models import loadMfcc10frameStanderdScaler
In [2]:
def getStanderizedData(data):
data_shape = data.shape
n = data_shape[0]
reshaped_data = data.reshape(n, -1)
saved_ss = loadMfcc10frameStanderdScaler()
trasformed_data = saved_ss.transform(reshaped_data)
ret_data = trasformed_data.reshape(data_shape)
return ret_data
In [3]:
X_train, X_test, y_train, y_test = read_mfcc_10frame_with_train_test()
X_ss_train = getStanderizedData(X_train)
X_ss_test = getStanderizedData(X_test)
In [4]:
print(X_ss_train.shape)
In [5]:
seq = Sequential()
seq.add(ConvLSTM2D(filters=40, kernel_size=(3, 3),
input_shape=(1, 10, 128, 128),
padding='same', return_sequences=True, activation='relu', data_format='channels_first'))
seq.add(BatchNormalization())
seq.add(ConvLSTM2D(filters=40, kernel_size=(3, 3),
padding='same', return_sequences=True))
seq.add(BatchNormalization())
seq.add(ConvLSTM2D(filters=40, kernel_size=(3, 3),
padding='same', return_sequences=True))
seq.add(BatchNormalization())
seq.add(ConvLSTM2D(filters=40, kernel_size=(3, 3),
padding='same', return_sequences=True))
seq.add(BatchNormalization())
#seq.add(Flatten())
#seq.add(Dense(100, activation='relu'))
#seq.add(Dropout(0.4))
#seq.add(BatchNormalization())
seq.add(Dense(10, activation='softmax'))
seq.compile(loss='binary_crossentropy', optimizer='adadelta', metrics=['accuracy', 'categorical_accuracy'])
In [6]:
result = seq.fit(X_ss_train, y_train, batch_size=100, epochs=5, validation_split=0.2)
In [10]:
score = seq.evaluate(X_ss_test, y_test, batch_size=100)
print("")
print(seq.metrics_names)
print(score)
In [12]:
%matplotlib inline
x = range(5)
plt.plot(x, result.history['acc'], label='train accuracy')
plt.plot(x, result.history['val_acc'], label='test accuracy')
plt.legend(loc='center left', bbox_to_anchor=(1, 0.5))
Out[12]:
In [8]:
model_filepath = "./savedModels/ceps_conv_lstm_model.h5"
seq.save(model_filepath)