batch_i = [] target = [] for j in range(training_batch): batch_i.append(training_dataset[training_shuffled_index[ j + (i * training_batch)]]) target.append(target_training_dataset[ training_shuffled_index[j + (i * training_batch)]]) batch_i = data_rep.sparse_dataset(batch_i) print(batch_i.shape) # batch_i = training_dataset[(i*batch):(i*batch)+batch] sequence_length = np.array( [batch_i.shape[1] for _ in range(training_batch)]) # target = target_training_dataset[(i*batch):(i*batch)+batch] sparse_labels = data_rep.SimpleSparseTensorFrom(target) feed = { input_batch: batch_i, seq_len: sequence_length, targets: sparse_labels, is_training: True, alpha: learning_rate } loss, logg, _, sum_result = sess.run( [avg_loss, decode, optimizer, summary], feed) training_writer.add_summary(sum_result, (iter * training_batch) + i) print("Encoded CTC :") report_training.write("Encoded CTC :" + '\n') decode_text = data_rep.indices_to_text(logg[0][1])
def feed(self, iteration, report_dir, checkpoint_dir, datasets): with tf.Session( config=tf.ConfigProto(allow_soft_placement=True, log_device_placement=False)) as sess: last_iteration = session.current_epoch training_losses = [] training_old_losses = [] testing_losses = [] testing_old_losses = [] for iter in range(iteration): report_training = open( os.path.join(report_dir, 'report_training.txt'), "a") reporttrainingcsv = open( os.path.join(report_dir, 'result_training.csv'), "a") report_testing = open( os.path.join(report_dir, 'report_testing.txt'), "a") reporttestingcsv = open( os.path.join(report_dir, 'result_testing.csv'), "a") trainingcsvwriter = csv.writer(reporttrainingcsv) testingcsvwriter = csv.writer(reporttestingcsv) # =================================TRAINING PHASE================================= print("iteration #" + str(iter + last_iteration)) report_training.write("iteration #" + str(iter + last_iteration) + '\n') csv_training_values = [] csv_training_values.append(iter + last_iteration) if iter > 0: training_old_losses = training_losses training_losses = [] training_shuffled_index = np.arange( len(datasets.training_dataset)) np.random.shuffle(training_shuffled_index) for i in range( int( len(datasets.training_dataset) / int(self.training_batch))): session.start_timer() csv_training_values = [] print( "=================================TRAINING PHASE BATCH #" + str(i) + " ITERATION AT " + str(iter) + "=================================") report_training.write( "=================================TRAINING PHASE BATCH #" + str(i) + " ITERATION AT " + str(iter) + "=================================" + '\n') csv_training_values.append(i) csv_training_values.append(self.learning_rate) # get batch shuffled index batch_i = [] target = [] for j in range(self.training_batch): batch_i.append( datasets.training_dataset[training_shuffled_index[ j + (i * self.training_batch)]]) target.append(datasets.target_training_dataset[ training_shuffled_index[j + (i * self.training_batch)]]) batch_i = data_rep.sparse_dataset(batch_i) print(batch_i.shape) # batch_i = training_dataset[(i*batch):(i*batch)+batch] sequence_length = np.array( [batch_i.shape[1] for _ in range(self.training_batch)]) # target = target_training_dataset[(i*batch):(i*batch)+batch] sparse_labels = data_rep.SimpleSparseTensorFrom(target) feed = { self.input_batch: batch_i, self.seq_len: sequence_length, self.targets: sparse_labels, self.is_training: True, self.alpha: self.learning_rate } loss, logg, _ = sess.run( [self.avg_loss, self.decode, self.optimizer], feed) print("Encoded CTC :") report_training.write("Encoded CTC :" + '\n') decode_text = data_rep.indices_to_text(logg[0][1]) print(decode_text) print("first target : \n" + data_rep.indices_to_text(target[0])) report_training.write(decode_text + '\n') report_training.write("first target : " + data_rep.indices_to_text(target[0]) + '\n') csv_training_values.append( data_rep.indices_to_text(target[0])) # # summ = sess.run(summaries, feed) # writer.add_summary(summ,iter) print("negative log-probability :" + str(loss)) report_training.write("negative log-probability :" + str(loss) + '\n') csv_training_values.append(loss) csv_training_values.append(decode_text) csv_training_values.append( data_rep.indices_to_text(target[0])) trainingcsvwriter.writerow(csv_training_values) training_losses.append(loss) session.stop_timer() cycle_batch = int( len(datasets.training_dataset) / int(self.training_batch)) remaining_time = (((iteration - iter) * cycle_batch) - i) * session.duration report_training.write("Elapsed time: " + str(session.duration) + '\n') print("Remaining time : " + str(remaining_time)) report_training.write("Remaining time: " + str(remaining_time) + '\n') if iter > 0: diff = np.array(training_losses) - np.array( training_old_losses) th = diff.mean() percentage = th / np.array( training_old_losses).mean() * 100 print("Learning performance : " + str(th)) report_training.write("Learning performance : " + str(th) + '\n') report_training.write("Learning percentage : " + str(percentage) + '\n') self.save(sess, checkpoint_dir, report_training)