1. tuned batchsize

2. fixed last batch carry-over
master
Malar Kannan 2017-11-15 14:14:17 +05:30
parent 036667d1c7
commit e9f54c7f6f
3 changed files with 15 additions and 9 deletions

View File

@ -161,7 +161,7 @@ def read_siamese_tfrecords_generator(audio_group='audio',batch_size=32,test_size
input_data.append(np.asarray([p_spec1,p_spec2])) input_data.append(np.asarray([p_spec1,p_spec2]))
output = example.features.feature['output'].int64_list.value output = example.features.feature['output'].int64_list.value
output_data.append(np.asarray(output)) output_data.append(np.asarray(output))
if len(input_data) == batch_size: if len(input_data) == batch_size or i == n_records-1:
input_arr = np.asarray(input_data) input_arr = np.asarray(input_data)
output_arr = np.asarray(output_data) output_arr = np.asarray(output_data)
yield ([input_arr[:, 0], input_arr[:, 1]],output_arr) yield ([input_arr[:, 0], input_arr[:, 1]],output_arr)

View File

@ -12,7 +12,7 @@ from keras.utils import to_categorical
from keras.optimizers import RMSprop from keras.optimizers import RMSprop
from keras.callbacks import TensorBoard, ModelCheckpoint from keras.callbacks import TensorBoard, ModelCheckpoint
from keras import backend as K from keras import backend as K
from speech_tools import create_dir from speech_tools import create_dir,step_count
# def euclidean_distance(vects): # def euclidean_distance(vects):
# x, y = vects # x, y = vects
@ -96,7 +96,7 @@ def load_model_arch(mod_file):
def train_siamese(audio_group = 'audio'): def train_siamese(audio_group = 'audio'):
# the data, shuffled and split between train and test sets # the data, shuffled and split between train and test sets
# tr_pairs, te_pairs, tr_y_e, te_y_e = speech_model_data() # tr_pairs, te_pairs, tr_y_e, te_y_e = speech_model_data()
batch_size = 128 batch_size = 256
model_dir = './models/'+audio_group model_dir = './models/'+audio_group
create_dir(model_dir) create_dir(model_dir)
log_dir = './logs/'+audio_group log_dir = './logs/'+audio_group
@ -141,12 +141,14 @@ def train_siamese(audio_group = 'audio'):
# epochs=100, # epochs=100,
# validation_data=([te_pairs[:, 0], te_pairs[:, 1]], te_y), # validation_data=([te_pairs[:, 0], te_pairs[:, 1]], te_y),
# callbacks=[tb_cb, cp_cb]) # callbacks=[tb_cb, cp_cb])
epoch_n_steps = step_count(n_records,batch_size)
model.fit_generator(tr_gen model.fit_generator(tr_gen
,epochs=1000 , epochs=1000
,steps_per_epoch=n_records//batch_size , steps_per_epoch=epoch_n_steps
,validation_data=([te_pairs[:, 0], te_pairs[:, 1]], te_y) , validation_data=([te_pairs[:, 0], te_pairs[:, 1]], te_y)
,use_multiprocessing=True, workers=1 # ,use_multiprocessing=True, workers=1
,callbacks=[tb_cb, cp_cb]) , max_queue_size=32
, callbacks=[tb_cb, cp_cb])
model.save(model_dir+'/siamese_speech_model-final.h5') model.save(model_dir+'/siamese_speech_model-final.h5')
# compute final accuracy on training and test sets # compute final accuracy on training and test sets
# y_pred = model.predict([tr_pairs[:, 0], tr_pairs[:, 1]]) # y_pred = model.predict([tr_pairs[:, 0], tr_pairs[:, 1]])
@ -160,5 +162,5 @@ def train_siamese(audio_group = 'audio'):
if __name__ == '__main__': if __name__ == '__main__':
train_siamese('story_words') train_siamese('story_words_test')
# train_siamese('audio') # train_siamese('audio')

View File

@ -1,4 +1,5 @@
import os import os
import math
import threading import threading
import multiprocessing import multiprocessing
import pandas as pd import pandas as pd
@ -11,6 +12,9 @@ from speech_spectrum import plot_stft, generate_spec_frec
SAMPLE_RATE = 22050 SAMPLE_RATE = 22050
N_CHANNELS = 2 N_CHANNELS = 2
def step_count(n_records,batch_size):
return int(math.ceil(n_records*1.0/batch_size))
def file_player(): def file_player():
p_oup = pyaudio.PyAudio() p_oup = pyaudio.PyAudio()
def play_file(audiopath,plot=False): def play_file(audiopath,plot=False):