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


Using TensorFlow backend.

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)


(800, 1, 10, 128, 128)

In [7]:
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 [8]:
result = seq.fit(X_ss_train, y_train, batch_size=100, epochs=5, validation_split=0.2)


Train on 640 samples, validate on 160 samples
Epoch 1/5
---------------------------------------------------------------------------
KeyboardInterrupt                         Traceback (most recent call last)
<ipython-input-8-089e9d0be5c1> in <module>()
----> 1 result = seq.fit(X_ss_train, y_train, batch_size=100, epochs=5, validation_split=0.2)

/home/minato/.pyenv/versions/anaconda3-4.2.0/lib/python3.5/site-packages/keras/models.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, **kwargs)
    868                               class_weight=class_weight,
    869                               sample_weight=sample_weight,
--> 870                               initial_epoch=initial_epoch)
    871 
    872     def evaluate(self, x, y, batch_size=32, verbose=1,

/home/minato/.pyenv/versions/anaconda3-4.2.0/lib/python3.5/site-packages/keras/engine/training.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, **kwargs)
   1505                               val_f=val_f, val_ins=val_ins, shuffle=shuffle,
   1506                               callback_metrics=callback_metrics,
-> 1507                               initial_epoch=initial_epoch)
   1508 
   1509     def evaluate(self, x, y, batch_size=32, verbose=1, sample_weight=None):

/home/minato/.pyenv/versions/anaconda3-4.2.0/lib/python3.5/site-packages/keras/engine/training.py in _fit_loop(self, f, ins, out_labels, batch_size, epochs, verbose, callbacks, val_f, val_ins, shuffle, callback_metrics, initial_epoch)
   1154                 batch_logs['size'] = len(batch_ids)
   1155                 callbacks.on_batch_begin(batch_index, batch_logs)
-> 1156                 outs = f(ins_batch)
   1157                 if not isinstance(outs, list):
   1158                     outs = [outs]

/home/minato/.pyenv/versions/anaconda3-4.2.0/lib/python3.5/site-packages/keras/backend/tensorflow_backend.py in __call__(self, inputs)
   2267         updated = session.run(self.outputs + [self.updates_op],
   2268                               feed_dict=feed_dict,
-> 2269                               **self.session_kwargs)
   2270         return updated[:len(self.outputs)]
   2271 

/home/minato/.pyenv/versions/anaconda3-4.2.0/lib/python3.5/site-packages/tensorflow/python/client/session.py in run(self, fetches, feed_dict, options, run_metadata)
    776     try:
    777       result = self._run(None, fetches, feed_dict, options_ptr,
--> 778                          run_metadata_ptr)
    779       if run_metadata:
    780         proto_data = tf_session.TF_GetBuffer(run_metadata_ptr)

/home/minato/.pyenv/versions/anaconda3-4.2.0/lib/python3.5/site-packages/tensorflow/python/client/session.py in _run(self, handle, fetches, feed_dict, options, run_metadata)
    980     if final_fetches or final_targets:
    981       results = self._do_run(handle, final_targets, final_fetches,
--> 982                              feed_dict_string, options, run_metadata)
    983     else:
    984       results = []

/home/minato/.pyenv/versions/anaconda3-4.2.0/lib/python3.5/site-packages/tensorflow/python/client/session.py in _do_run(self, handle, target_list, fetch_list, feed_dict, options, run_metadata)
   1030     if handle is None:
   1031       return self._do_call(_run_fn, self._session, feed_dict, fetch_list,
-> 1032                            target_list, options, run_metadata)
   1033     else:
   1034       return self._do_call(_prun_fn, self._session, handle, feed_dict,

/home/minato/.pyenv/versions/anaconda3-4.2.0/lib/python3.5/site-packages/tensorflow/python/client/session.py in _do_call(self, fn, *args)
   1037   def _do_call(self, fn, *args):
   1038     try:
-> 1039       return fn(*args)
   1040     except errors.OpError as e:
   1041       message = compat.as_text(e.message)

/home/minato/.pyenv/versions/anaconda3-4.2.0/lib/python3.5/site-packages/tensorflow/python/client/session.py in _run_fn(session, feed_dict, fetch_list, target_list, options, run_metadata)
   1019         return tf_session.TF_Run(session, options,
   1020                                  feed_dict, fetch_list, target_list,
-> 1021                                  status, run_metadata)
   1022 
   1023     def _prun_fn(session, handle, feed_dict, fetch_list):

KeyboardInterrupt: 

In [9]:
score = seq.evaluate(X_ss_test, y_test, batch_size=100)
print("")
print(seq.metrics_names)
print(score)


100/200 [==============>...............] - ETA: 151s
---------------------------------------------------------------------------
KeyboardInterrupt                         Traceback (most recent call last)
<ipython-input-9-8a398be4cfa2> in <module>()
----> 1 score = seq.evaluate(X_ss_test, y_test, batch_size=100)
      2 print("")
      3 print(seq.metrics_names)
      4 print(score)

/home/minato/.pyenv/versions/anaconda3-4.2.0/lib/python3.5/site-packages/keras/models.py in evaluate(self, x, y, batch_size, verbose, sample_weight)
    897                                    batch_size=batch_size,
    898                                    verbose=verbose,
--> 899                                    sample_weight=sample_weight)
    900 
    901     def predict(self, x, batch_size=32, verbose=0):

/home/minato/.pyenv/versions/anaconda3-4.2.0/lib/python3.5/site-packages/keras/engine/training.py in evaluate(self, x, y, batch_size, verbose, sample_weight)
   1549         return self._test_loop(f, ins,
   1550                                batch_size=batch_size,
-> 1551                                verbose=verbose)
   1552 
   1553     def predict(self, x, batch_size=32, verbose=0):

/home/minato/.pyenv/versions/anaconda3-4.2.0/lib/python3.5/site-packages/keras/engine/training.py in _test_loop(self, f, ins, batch_size, verbose)
   1270                 ins_batch = _slice_arrays(ins, batch_ids)
   1271 
-> 1272             batch_outs = f(ins_batch)
   1273             if isinstance(batch_outs, list):
   1274                 if batch_index == 0:

/home/minato/.pyenv/versions/anaconda3-4.2.0/lib/python3.5/site-packages/keras/backend/tensorflow_backend.py in __call__(self, inputs)
   2267         updated = session.run(self.outputs + [self.updates_op],
   2268                               feed_dict=feed_dict,
-> 2269                               **self.session_kwargs)
   2270         return updated[:len(self.outputs)]
   2271 

/home/minato/.pyenv/versions/anaconda3-4.2.0/lib/python3.5/site-packages/tensorflow/python/client/session.py in run(self, fetches, feed_dict, options, run_metadata)
    776     try:
    777       result = self._run(None, fetches, feed_dict, options_ptr,
--> 778                          run_metadata_ptr)
    779       if run_metadata:
    780         proto_data = tf_session.TF_GetBuffer(run_metadata_ptr)

/home/minato/.pyenv/versions/anaconda3-4.2.0/lib/python3.5/site-packages/tensorflow/python/client/session.py in _run(self, handle, fetches, feed_dict, options, run_metadata)
    980     if final_fetches or final_targets:
    981       results = self._do_run(handle, final_targets, final_fetches,
--> 982                              feed_dict_string, options, run_metadata)
    983     else:
    984       results = []

/home/minato/.pyenv/versions/anaconda3-4.2.0/lib/python3.5/site-packages/tensorflow/python/client/session.py in _do_run(self, handle, target_list, fetch_list, feed_dict, options, run_metadata)
   1030     if handle is None:
   1031       return self._do_call(_run_fn, self._session, feed_dict, fetch_list,
-> 1032                            target_list, options, run_metadata)
   1033     else:
   1034       return self._do_call(_prun_fn, self._session, handle, feed_dict,

/home/minato/.pyenv/versions/anaconda3-4.2.0/lib/python3.5/site-packages/tensorflow/python/client/session.py in _do_call(self, fn, *args)
   1037   def _do_call(self, fn, *args):
   1038     try:
-> 1039       return fn(*args)
   1040     except errors.OpError as e:
   1041       message = compat.as_text(e.message)

/home/minato/.pyenv/versions/anaconda3-4.2.0/lib/python3.5/site-packages/tensorflow/python/client/session.py in _run_fn(session, feed_dict, fetch_list, target_list, options, run_metadata)
   1019         return tf_session.TF_Run(session, options,
   1020                                  feed_dict, fetch_list, target_list,
-> 1021                                  status, run_metadata)
   1022 
   1023     def _prun_fn(session, handle, feed_dict, fetch_list):

KeyboardInterrupt: 

In [10]:
%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))


---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-10-60288c2e9959> in <module>()
      2 
      3 x = range(5)
----> 4 plt.plot(x, result.history['acc'], label='train accuracy')
      5 plt.plot(x, result.history['val_acc'], label='test accuracy')
      6 plt.legend(loc='center left', bbox_to_anchor=(1, 0.5))

NameError: name 'result' is not defined

In [ ]:
model_filepath = "./savedModels/ceps_conv_lstm_model.h5"
seq.save(model_filepath)

In [ ]: