diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/configure/__init__.py b/configure/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/lib/__init__.py b/lib/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/lib/matlab_py/__init__.py b/lib/matlab_py/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/lib/matlab_py/mrcg.py b/lib/matlab_py/mrcg.py index a5e5395..5d1cd45 100644 --- a/lib/matlab_py/mrcg.py +++ b/lib/matlab_py/mrcg.py @@ -117,7 +117,12 @@ def loudness(freq): # pressure level dB. The equation is taken from section 4 of BS3383. # Written by ZZ Jin, and adapted by DLW in Jan'07 dB=60 - fmat = sio.loadmat('./lib/matlab_py/f_af_bf_cf.mat') + fmat = sio.loadmat( + os.path.join( + os.path.dirname(os.path.abspath(__file__)), + 'f_af_bf_cf.mat', + ) + ) # Stores parameters of equal-loudness functions from BS3383,"Normal equal-loudness level # contours for pure tones under free-field listening conditions", table 1. # f (or ff) is the tone frequency, af and bf are frequency-dependent coefficients, and diff --git a/lib/matlab_py/utils.py b/lib/matlab_py/utils.py index 9fc276a..4ccebf2 100644 --- a/lib/matlab_py/utils.py +++ b/lib/matlab_py/utils.py @@ -1,20 +1,14 @@ import os + import librosa import numpy as np import scipy.io as sio -# from scipy.stats import threshold -import lib.matlab_py.mrcg as mrcg +from . import mrcg as mrcg def th_classifier(input, th): - output = (input >= th).choose(input, 1) output = (output < th).choose(output, 0) - # output = np.clip(input, a_min=th, a_max=None) - # output = np.divide(output, th) - # output = np.subtract(1, output) - # output = np.clip(output, a_min=1 - th, a_max=None) - # output = np.subtract(1, output) return output @@ -32,7 +26,7 @@ def binary_saver(name_file, data, num_file ): return fid_file, fid_txt -def Frame_Length( x,overlap,nwind ): +def Frame_Length( x, overlap, nwind): nx = len(x) noverlap = nwind - overlap framelen = int((nx - noverlap) / (nwind - noverlap)) @@ -83,7 +77,9 @@ def frame2rawlabel(label, win_len, win_step): break else: temp_label = label[i] - raw_label[start_indx+1:start_indx+win_len] = raw_label[start_indx+1:start_indx+win_len] + temp_label + raw_label[ + start_indx+1:start_indx+win_len + ] = raw_label[start_indx+1:start_indx+win_len] + temp_label i += 1 start_indx = start_indx + win_step @@ -92,25 +88,6 @@ def frame2rawlabel(label, win_len, win_step): return raw_label -# def frame2rawlabel(label, win_len, win_step): -# num_frame = len(label) -# total_len = (num_frame - 1) * win_step + win_len -# raw_label = np.zeros([1, total_len]) -# start_indx = 0 -# i = 0 -# while 1 : -# if (start_indx+win_len>total_len): -# break -# -# temp = label[i]*np.ones([1,win_len]) -# temp2 = raw_label[0][start_indx : start_indx + win_len] -# raw_label[0][start_indx : start_indx + win_len] = temp2 + temp -# i = i+1 -# start_indx = start_indx+win_step -# -# raw_label = th_classifier(raw_label, 1) -# return raw_label - def frame2inpt(label, win_len, win_step): num_frame = len(label) @@ -121,9 +98,10 @@ def frame2inpt(label, win_len, win_step): while 1: if (start_indx + win_len > total_len): break - temp = label[i] * np.ones([1, win_len]) - raw_label[start_indx: start_indx + win_len] = raw_label[start_indx: start_indx + win_len] + temp + raw_label[ + start_indx: start_indx + win_len + ] = raw_label[start_indx: start_indx + win_len] + temp i = i + 1 start_indx = start_indx + win_step @@ -131,12 +109,11 @@ def frame2inpt(label, win_len, win_step): return raw_label -def mrcg_extract(audio_dir) : +def mrcg_extract(audio_dir, save_dir): noisy_speech, audio_sr = librosa.load(audio_dir, sr=16000) y_label = np.zeros([len(noisy_speech), 1]) - os.mkdir('./sample_data') - os.mkdir('./sample_data/Labels') - save_dir = './sample_data' + os.makedirs(save_dir, exist_ok=True) + os.makedirs("{}/Labels".format(save_dir), exist_ok=True) name_mrcg = save_dir + '/mrcg' name_label = save_dir + '/Labels/label' mrcg_mat = np.transpose(mrcg.mrcg_features(noisy_speech, audio_sr)) @@ -155,14 +132,22 @@ def mrcg_extract(audio_dir) : binary_saver(name_label, framed_label[1: len(mrcg_mat), 1], num ) data_len = len(mrcg_mat) sio.savemat(save_dir+'/normalize_factor',{'train_mean': train_mean, 'train_std': train_std}) - # save([save_dir, '/normalize_factor'], 'train_mean', 'train_std') print('MRCG extraction is successifully done.') return data_len, winlen, winstep -def vad_func(audio_dir, mode, th, output_type, is_default, off_on_length=20, on_off_length=20, hang_before=10, - hang_over=10): +def vad_func( + audio_dir, + mode, + th, + output_type, + is_default, + off_on_length=20, + on_off_length=20, + hang_before=10, + hang_over=10 +): os.system('rm -rf result') os.system('rm -rf sample_data') @@ -177,9 +162,8 @@ def vad_func(audio_dir, mode, th, output_type, is_default, off_on_length=20, on_ os.system(order) - pred_result = sio.loadmat('./result/pred.mat') + pred_result = sio.loadmat('result/pred.mat') pp = pred_result['pred'] - result = np.zeros([len(pp), 1]) result = th_classifier(pp, th) result = vad_post(result, off_on_length, on_off_length, hang_before, hang_over) if output_type == 1: @@ -189,9 +173,6 @@ def vad_func(audio_dir, mode, th, output_type, is_default, off_on_length=20, on_ def vad_post(post_label, off_on_length=20, on_off_length=20, hang_before=10, hang_over=10): - # plt.subplot(4,1,1) - # plt.plot(post_label) - '''fill 1 to short valley''' offset = False onset = False @@ -209,8 +190,6 @@ def vad_post(post_label, off_on_length=20, on_off_length=20, hang_before=10, han offset = False '''remove impulse like detection''' - # plt.subplot(4,1,2) - # plt.plot(post_label) post_label = np.concatenate([np.zeros((1, 1)), post_label], axis=0) for i in range(post_label.shape[0]): diff --git a/lib/python/VAD_test.py b/lib/python/VAD_test.py index 5153cc8..45d3e67 100644 --- a/lib/python/VAD_test.py +++ b/lib/python/VAD_test.py @@ -1,11 +1,8 @@ import sys sys.path.insert(0, './lib/python') -import VAD_Proposed as Vp -import VAD_DNN as Vd -import VAD_bDNN as Vb -import VAD_LSTM_2 as Vl import scipy.io as sio -import graph_test as graph_test + +from . import graph_test import os, getopt import glob @@ -17,76 +14,26 @@ # model_dir = "./saved_model" # valid_batch_size = 4134 -if __name__ == '__main__': - - try: - opts, args = getopt.getopt(sys.argv[1:], 'hm:l:d:', ["data_dir=", "norm_dir=", "model_dir="]) - except getopt.GetoptError as err: - print(str(err)) - sys.exit(1) - - if len(opts) != 6: - print("arguments are not enough.") - sys.exit(1) - - for opt, arg in opts: - if opt == '-h': - sys.exit(0) - elif opt == '-m': - mode = int(arg) - elif opt == '-l': - data_len = int(arg) - elif opt == '-d': - is_default = int(arg) - elif opt == '--data_dir': - data_dir = str(arg) - elif opt == '--norm_dir': - norm_dir = str(arg) - elif opt == '--model_dir': - model_dir = str(arg) - +def get_predictions(mode, data_len, is_default, data_dir, norm_dir, model_dir): if mode == 0: - # Vp.test_config(c_test_dir=data_dir, - # c_norm_dir=norm_dir, - # c_initial_logs_dir=model_dir, c_batch_size_eval=batch_size, - # c_data_len=data_len) - # - # pred, label = Vp.main() - if is_default: graph_list = sorted(glob.glob(model_dir + '/backup/backup_pb/frozen_model_ACAM.pb')) norm_dir = model_dir + '/backup/backup_norm' - pred, label = graph_test.do_test(graph_list[-1], data_dir, norm_dir, data_len, is_default, mode) else: graph_list = sorted(glob.glob(model_dir + '/graph/ACAM/*.pb')) print(graph_list) - pred, label = graph_test.do_test(graph_list[-1], data_dir, norm_dir, data_len, is_default, mode) elif mode == 1: print(os.path.abspath('./configure/bDNN')) sys.path.insert(0, os.path.abspath('./configure/bDNN')) - import config as cg if is_default: graph_list = sorted(glob.glob(model_dir + '/backup/backup_pb/frozen_model_bDNN.pb')) norm_dir = model_dir + '/backup/backup_norm' - pred, label = graph_test.do_test(graph_list[-1], data_dir, norm_dir, data_len, is_default, mode) else: graph_list = sorted(glob.glob(model_dir + '/graph/bDNN/*.pb')) print(graph_list) - pred, label = graph_test.do_test(graph_list[-1], data_dir, norm_dir, data_len, is_default, mode) - - # Vb.test_config(c_test_dir=data_dir, - # c_norm_dir=norm_dir, - # c_initial_logs_dir=model_dir, c_batch_size_eval=batch_size, - # c_data_len=data_len) - # Vb.test_config(c_test_dir=data_dir, - # c_norm_dir='/home/sbie/storage3/github/VAD_Toolkit/VAD/saved_model/backup_norm', - # c_initial_logs_dir='/home/sbie/storage3/github/VAD_Toolkit/VAD/saved_model/backup_ckpt', c_batch_size_eval=batch_size, - # c_data_len=data_len) - # - # pred, label = Vb.main() elif mode == 2: @@ -94,22 +41,11 @@ print(os.path.abspath('./configure/DNN')) sys.path.insert(0, os.path.abspath('./configure/DNN')) - import config as cg - if is_default: graph_list = sorted(glob.glob(model_dir + '/backup/backup_pb/frozen_model_DNN.pb')) norm_dir = model_dir + '/backup/backup_norm' - pred, label = graph_test.do_test(graph_list[-1], data_dir, norm_dir, data_len, is_default, mode) else: graph_list = sorted(glob.glob(model_dir + '/graph/DNN/*.pb')) - pred, label = graph_test.do_test(graph_list[-1], data_dir, norm_dir, data_len, is_default, mode) - - # Vd.test_config(c_test_dir=data_dir, - # c_norm_dir=norm_dir, - # c_initial_logs_dir=model_dir, c_batch_size_eval=batch_size, - # c_data_len=data_len) - # - # pred, label = Vd.main() end_time = time() @@ -117,27 +53,48 @@ print(time_taken) elif mode == 3: - sys.path.insert(0, os.path.abspath('./configure/LSTM')) - - import config as cg - if is_default: graph_list = sorted(glob.glob(model_dir + '/backup/backup_pb/frozen_model_LSTM.pb')) norm_dir = model_dir + '/backup/backup_norm' - pred, label = graph_test.do_test(graph_list[-1], data_dir, norm_dir, data_len, is_default, mode) else: graph_list = sorted(glob.glob(model_dir + '/graph/LSTM/*.pb')) print(graph_list) - pred, label = graph_test.do_test(graph_list[-1], data_dir, norm_dir, data_len, is_default, mode) - - # Vl.test_config(c_test_dir=data_dir, - # c_norm_dir=norm_dir, - # c_initial_logs_dir=model_dir, c_batch_num=200, c_seq_size=20, - # c_data_len=data_len) - # - # pred, label = Vl.main() + pred, label = graph_test.do_test(graph_list[-1], data_dir, norm_dir, data_len, is_default, mode) + print('{} pred : {} label'.format(pred, label)) + return pred, label + + +if __name__ == '__main__': + + try: + opts, args = getopt.getopt(sys.argv[1:], 'hm:l:d:', ["data_dir=", "norm_dir=", "model_dir="]) + except getopt.GetoptError as err: + print(str(err)) + sys.exit(1) + + if len(opts) != 6: + print("arguments are not enough.") + sys.exit(1) + + for opt, arg in opts: + if opt == '-h': + sys.exit(0) + elif opt == '-m': + mode = int(arg) + elif opt == '-l': + data_len = int(arg) + elif opt == '-d': + is_default = int(arg) + elif opt == '--data_dir': + data_dir = str(arg) + elif opt == '--norm_dir': + norm_dir = str(arg) + elif opt == '--model_dir': + model_dir = str(arg) + + pred, label = get_predictions(mode, data_len, is_default, data_dir, norm_dir, model_dir) - sio.savemat('./result/pred.mat', {'pred': pred}) - sio.savemat('./result/label.mat', {'label': label}) + sio.savemat('result/pred.mat', {'pred': pred}) + sio.savemat('result/label.mat', {'label': label}) print("done") diff --git a/lib/python/__init__.py b/lib/python/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/lib/python/data_reader_bDNN_v2.py b/lib/python/data_reader_bDNN_v2.py index 4db492d..ba5e256 100644 --- a/lib/python/data_reader_bDNN_v2.py +++ b/lib/python/data_reader_bDNN_v2.py @@ -1,14 +1,14 @@ -import numpy as np -import os import glob -import utils + +import numpy as np import scipy.io as sio +from . import utils + class DataReader(object): def __init__(self, input_dir, output_dir, norm_dir, w=19, u=9, name=None): - # print(name + " data reader initialization...") self._input_dir = input_dir self._output_dir = output_dir self._norm_dir = norm_dir diff --git a/lib/python/graph_test.py b/lib/python/graph_test.py index 1a49ea4..ccceccc 100644 --- a/lib/python/graph_test.py +++ b/lib/python/graph_test.py @@ -1,6 +1,6 @@ import tensorflow as tf -import utils as utils +from . import utils import numpy as np import os, sys @@ -61,9 +61,12 @@ def do_test(fname_model, test_file_dir, norm_dir, data_len, is_default, model_ty final_label = [] if model_type == 0: # acam - import data_reader_bDNN_v2 as dr - print(os.path.abspath('./configure/ACAM')) - sys.path.insert(0, os.path.abspath('./configure/ACAM')) + from . import data_reader_bDNN_v2 as dr + ACAM_relative_file_path = os.path.join( + os.path.dirname(os.path.abspath(__file__)), + '../../configure/ACAM', + ) + sys.path.insert(0, os.path.abspath(ACAM_relative_file_path)) import config as cg @@ -106,18 +109,10 @@ def do_test(fname_model, test_file_dir, norm_dir, data_len, is_default, model_ty final_softout.append(soft_pred) final_label.append(raw_labels) - - # if valid_data_set.eof_checker(): - # final_softout = np.reshape(np.asarray(final_softout), [-1, 1]) - # final_label = np.reshape(np.asarray(final_label), [-1, 1]) - # valid_data_set.reader_initialize() - # # print('Valid data reader was initialized!') # initialize eof flag & num_file & start index - # break - return final_softout[0:data_len, :], final_label[0:data_len, :] if model_type == 1: # bdnn - import data_reader_bDNN_v2 as dr + from . import data_reader_bDNN_v2 as dr print(os.path.abspath('./configure/bDNN')) sys.path.insert(0, os.path.abspath('./configure/bDNN')) @@ -167,7 +162,7 @@ def do_test(fname_model, test_file_dir, norm_dir, data_len, is_default, model_ty return final_softout[0:data_len, :], final_label[0:data_len, :] if model_type == 2: # dnn - import data_reader_DNN_v2 as dnn_dr + from . import data_reader_DNN_v2 as dnn_dr print(os.path.abspath('./configure/DNN')) sys.path.insert(0, os.path.abspath('./configure/DNN')) @@ -213,7 +208,7 @@ def do_test(fname_model, test_file_dir, norm_dir, data_len, is_default, model_ty return final_softout[0:data_len, :], final_label[0:data_len, :] if model_type == 3: # lstm - import data_reader_RNN as rnn_dr + from . import data_reader_RNN as rnn_dr print(os.path.abspath('./configure/LSTM')) sys.path.insert(0, os.path.abspath('./configure/LSTM')) @@ -261,12 +256,6 @@ def do_test(fname_model, test_file_dir, norm_dir, data_len, is_default, model_ty final_softout.append(soft_pred) final_label.append(raw_labels) - # if valid_data_set.eof_checker(): - # final_softout = np.reshape(np.asarray(final_softout), [-1, 1]) - # final_label = np.reshape(np.asarray(final_label), [-1, 1]) - # valid_data_set.reader_initialize() - # # print('Valid data reader was initialized!') # initialize eof flag & num_file & start index - # break return final_softout[0:data_len, :], final_label[0:data_len, :] diff --git a/lib/python/utils.py b/lib/python/utils.py index 01acef1..a277b8d 100644 --- a/lib/python/utils.py +++ b/lib/python/utils.py @@ -1,19 +1,21 @@ # Utils used with tensorflow implementation -import tensorflow as tf -import numpy as np -import scipy.misc as misc -import os, sys -from six.moves import urllib +import os +import re +import sys import tarfile import zipfile + +import numpy as np import scipy.io -import re -import data_reader_bDNN_v2 as dr -import data_reader_DNN_v2 as dnn_dr -import data_reader_RNN as rnn_dr +import scipy.misc as misc +import tensorflow as tf +from six.moves import urllib + +from . import data_reader_DNN_v2 as dnn_dr +from . import data_reader_RNN as rnn_dr +from . import data_reader_bDNN_v2 as dr -from sklearn import metrics __author__ = 'Juntae' @@ -24,11 +26,17 @@ def vad_test(m_eval, sess_eval, batch_size_eval, eval_file_dir, norm_dir, data_l pad_size = batch_size_eval - data_len % batch_size_eval if eval_type != 2: - eval_data_set = dr.DataReader(eval_input_dir, eval_output_dir, norm_dir, w=19, u=9, name="eval") + eval_data_set = dr.DataReader( + eval_input_dir, eval_output_dir, norm_dir, w=19, u=9, name="eval" + ) else: - eval_data_set = dnn_dr.DataReader(eval_input_dir, eval_output_dir, norm_dir, w=19, u=9, name="eval") + eval_data_set = dnn_dr.DataReader( + eval_input_dir, eval_output_dir, norm_dir, w=19, u=9, name="eval" + ) - final_softout, final_label = evaluation(m_eval, eval_data_set, sess_eval, batch_size_eval, eval_type) + final_softout, final_label = evaluation( + m_eval, eval_data_set, sess_eval, batch_size_eval, eval_type + ) return final_softout, final_label @@ -40,8 +48,6 @@ def affine_transform(x, output_dim, seed=0, name=None): """ initializer = tf.truncated_normal_initializer(stddev=0.02, seed=seed) - # weights = tf.get_variable(name + "_w", [x.get_shape()[1], output_dim], - # initializer=tf.contrib.layers.xavier_initializer(seed=seed)) weights = tf.get_variable(name + "_w", [x.get_shape()[1], output_dim], initializer=initializer) b = tf.get_variable(name + "_b", [output_dim], initializer=tf.constant_initializer(0.0)) @@ -50,9 +56,6 @@ def affine_transform(x, output_dim, seed=0, name=None): def evaluation(m_valid, valid_data_set, sess, eval_batch_size, eval_type): - # num_samples = valid_data_set.num_samples - # num_batches = num_samples / batch_size - if eval_type == 0: # proposed final_softout = [] final_label = [] @@ -67,21 +70,14 @@ def evaluation(m_valid, valid_data_set, sess, eval_batch_size, eval_type): final_softout = np.reshape(np.asarray(final_softout), [-1, 1]) final_label = np.reshape(np.asarray(final_label), [-1, 1]) valid_data_set.reader_initialize() - # print('Valid data reader was initialized!') # initialize eof flag & num_file & start index break - valid_soft_result, valid_raw_labels = sess.run([m_valid.soft_result, m_valid.raw_labels], - feed_dict=feed_dict) + valid_soft_result, valid_raw_labels = sess.run( + [m_valid.soft_result, m_valid.raw_labels], feed_dict=feed_dict + ) final_softout.append(valid_soft_result) final_label.append(valid_raw_labels) - # if valid_data_set.eof_checker(): - # final_softout = np.reshape(np.asarray(final_softout), [-1, 1]) - # final_label = np.reshape(np.asarray(final_label), [-1, 1]) - # valid_data_set.reader_initialize() - # # print('Valid data reader was initialized!') # initialize eof flag & num_file & start index - # break - return final_softout, final_label elif eval_type == 1: # bdnn @@ -98,13 +94,13 @@ def evaluation(m_valid, valid_data_set, sess, eval_batch_size, eval_type): final_softout = np.reshape(np.asarray(final_softout), [-1, 1]) final_label = np.reshape(np.asarray(final_label), [-1, 1]) valid_data_set.reader_initialize() - # print('Valid data reader was initialized!') # initialize eof flag & num_file & start index + # initialize eof flag & num_file & start index break valid_cost, valid_logits = sess.run([m_valid.cost, m_valid.logits], feed_dict=feed_dict) - valid_pred, soft_pred = bdnn_prediction(eval_batch_size + 2*valid_data_set._w, valid_logits, threshold=0.6) - # print(np.sum(valid_pred)) - + valid_pred, soft_pred = bdnn_prediction( + eval_batch_size + 2*valid_data_set._w, valid_logits, threshold=0.6 + ) raw_indx = int(np.floor(valid_labels.shape[1] / 2)) raw_labels = valid_labels[:, raw_indx] @@ -113,14 +109,6 @@ def evaluation(m_valid, valid_data_set, sess, eval_batch_size, eval_type): final_softout.append(soft_pred) final_label.append(raw_labels) - - # if valid_data_set.eof_checker(): - # final_softout = np.reshape(np.asarray(final_softout), [-1, 1]) - # final_label = np.reshape(np.asarray(final_label), [-1, 1]) - # valid_data_set.reader_initialize() - # # print('Valid data reader was initialized!') # initialize eof flag & num_file & start index - # break - return final_softout, final_label elif eval_type == 2: # dnn @@ -140,7 +128,7 @@ def evaluation(m_valid, valid_data_set, sess, eval_batch_size, eval_type): final_softout = np.reshape(np.asarray(final_softout), [-1, 1]) final_label = np.reshape(np.asarray(final_label), [-1, 1]) valid_data_set.reader_initialize() - # print('Valid data reader was initialized!') # initialize eof flag & num_file & start index + # initialize eof flag & num_file & start index break soft_pred, raw_labels = sess.run([m_valid.softpred, m_valid.raw_labels], feed_dict=feed_dict) @@ -149,14 +137,6 @@ def evaluation(m_valid, valid_data_set, sess, eval_batch_size, eval_type): final_softout.append(soft_pred) final_label.append(raw_labels) - - # if valid_data_set.eof_checker(): - # final_softout = np.reshape(np.asarray(final_softout), [-1, 1]) - # final_label = np.reshape(np.asarray(final_label), [-1, 1]) - # valid_data_set.reader_initialize() - # # print('Valid data reader was initialized!') # initialize eof flag & num_file & start index - # break - return final_softout, final_label @@ -189,7 +169,10 @@ def maybe_download_and_extract(dir_path, url_name, is_tarfile=False, is_zipfile= if not os.path.exists(filepath): def _progress(count, block_size, total_size): sys.stdout.write( - '\r>> Downloading %s %.1f%%' % (filename, float(count * block_size) / float(total_size) * 100.0)) + '\r>> Downloading %s %.1f%%' % ( + filename, float(count * block_size) / float(total_size) * 100.0 + ) + ) sys.stdout.flush() filepath, _ = urllib.request.urlretrieve(url_name, filepath, reporthook=_progress) @@ -263,15 +246,14 @@ def conv2d_strided(x, W, b): def conv2d_transpose_strided(x, W, b, output_shape=None, stride = 2): - # print x.get_shape() - # print W.get_shape() if output_shape is None: output_shape = x.get_shape().as_list() output_shape[1] *= 2 output_shape[2] *= 2 output_shape[3] = W.get_shape().as_list()[2] - # print output_shape - conv = tf.nn.conv2d_transpose(x, W, output_shape, strides=[1, stride, stride, 1], padding="SAME") + conv = tf.nn.conv2d_transpose( + x, W, output_shape, strides=[1, stride, stride, 1], padding="SAME" + ) return tf.nn.bias_add(conv, b) @@ -302,8 +284,12 @@ def batch_norm(x, n_out, phase_train, scope='bn', decay=0.9, eps=1e-5): with tf.variable_scope(scope): beta = tf.get_variable(name='beta', shape=[n_out], initializer=tf.constant_initializer(0.0) , trainable=True) - gamma = tf.get_variable(name='gamma', shape=[n_out], initializer=tf.random_normal_initializer(1.0, 0.02), - trainable=True) + gamma = tf.get_variable( + name='gamma', + shape=[n_out], + initializer=tf.random_normal_initializer(1.0, 0.02), + trainable=True + ) batch_mean, batch_var = tf.nn.moments(x, [0, 1, 2], name='moments') ema = tf.train.ExponentialMovingAverage(decay=decay) @@ -312,9 +298,11 @@ def mean_var_with_update(): with tf.control_dependencies([ema_apply_op]): return tf.identity(batch_mean), tf.identity(batch_var) - mean, var = tf.cond(phase_train, - mean_var_with_update, - lambda: (ema.average(batch_mean), ema.average(batch_var))) + mean, var = tf.cond( + phase_train, + mean_var_with_update, + lambda: (ema.average(batch_mean), ema.average(batch_var)) + ) normed = tf.nn.batch_normalization(x, mean, var, beta, gamma, eps) return normed @@ -331,19 +319,30 @@ def bottleneck_unit(x, out_chan1, out_chan2, down_stride=False, up_stride=False, """ Modified implementation from github ry?! """ - def conv_transpose(tensor, out_channel, shape, strides, name=None): out_shape = tensor.get_shape().as_list() in_channel = out_shape[-1] kernel = weight_variable([shape, shape, out_channel, in_channel], name=name) shape[-1] = out_channel - return tf.nn.conv2d_transpose(x, kernel, output_shape=out_shape, strides=[1, strides, strides, 1], - padding='SAME', name='conv_transpose') + return tf.nn.conv2d_transpose( + x, + kernel, + output_shape=out_shape, + strides=[1, strides, strides, 1], + padding='SAME', + name='conv_transpose', + ) def conv(tensor, out_chans, shape, strides, name=None): in_channel = tensor.get_shape().as_list()[-1] kernel = weight_variable([shape, shape, in_channel, out_chans], name=name) - return tf.nn.conv2d(x, kernel, strides=[1, strides, strides, 1], padding='SAME', name='conv') + return tf.nn.conv2d( + x, + kernel, + strides=[1, strides, strides, 1], + padding='SAME', + name='conv' + ) def bn(tensor, name=None): """ @@ -369,14 +368,32 @@ def bn(tensor, name=None): b1 = conv_transpose(x, out_chans=out_chan2, shape=1, strides=first_stride, name='res%s_branch1' % name) else: - b1 = conv(x, out_chans=out_chan2, shape=1, strides=first_stride, name='res%s_branch1' % name) + b1 = conv( + x, + out_chans=out_chan2, + shape=1, + strides=first_stride, + name='res%s_branch1' % name + ) b1 = bn(b1, 'bn%s_branch1' % name, 'scale%s_branch1' % name) with tf.variable_scope('branch2a'): if up_stride: - b2 = conv_transpose(x, out_chans=out_chan1, shape=1, strides=first_stride, name='res%s_branch2a' % name) + b2 = conv_transpose( + x, + out_chans=out_chan1, + shape=1, + strides=first_stride, + name='res%s_branch2a' % name + ) else: - b2 = conv(x, out_chans=out_chan1, shape=1, strides=first_stride, name='res%s_branch2a' % name) + b2 = conv( + x, + out_chans=out_chan1, + shape=1, + strides=first_stride, + name='res%s_branch2a' % name + ) b2 = bn(b2, 'bn%s_branch2a' % name, 'scale%s_branch2a' % name) b2 = tf.nn.relu(b2, name='relu') @@ -458,13 +475,16 @@ def batch_norm_affine_transform(x, output_dim, decay=0, name=None, seed=0, is_tr affine transformation Wx+b assumes x.shape = (batch_size, num_features) """ - # initializer = tf.contrib.layers.xavier_initializer(seed=seed) - - w = tf.get_variable(name+"_w", [x.get_shape()[1], output_dim], initializer = tf.contrib.layers.xavier_initializer(seed=seed)) + w = tf.get_variable( + name+"_w", + [x.get_shape()[1], output_dim], + initializer = tf.contrib.layers.xavier_initializer(seed=seed) + ) b = tf.get_variable(name+"_b", [output_dim], initializer=tf.constant_initializer(0.0)) affine_result = tf.matmul(x, w) + b - batch_norm_result = tf.contrib.layers.batch_norm(affine_result, decay=decay, is_training=is_training, - updates_collections=None) + batch_norm_result = tf.contrib.layers.batch_norm( + affine_result, decay=decay, is_training=is_training, updates_collections=None + ) return batch_norm_result @@ -549,8 +569,9 @@ def do_validation(m_valid, sess, valid_file_dir, norm_dir, type='DNN'): import config as cg valid_batch_size = cg.batch_size - valid_data_set = dnn_dr.DataReader(valid_file_dir, valid_file_dir+'/Labels', norm_dir, w=cg.w, - u=cg.u, name="eval") + valid_data_set = dnn_dr.DataReader( + valid_file_dir, valid_file_dir+'/Labels', norm_dir, w=cg.w, u=cg.u, name="eval" + ) avg_valid_accuracy = 0. avg_valid_cost = 0. @@ -575,7 +596,8 @@ def do_validation(m_valid, sess, valid_file_dir, norm_dir, type='DNN'): if valid_data_set.eof_checker(): valid_data_set.reader_initialize() - print('Valid data reader was initialized!') # initialize eof flag & num_file & start index + print('Valid data reader was initialized!') + # initialize eof flag & num_file & start index break one_hot_labels = valid_labels.reshape((-1, 1)) @@ -584,13 +606,9 @@ def do_validation(m_valid, sess, valid_file_dir, norm_dir, type='DNN'): feed_dict = {m_valid.inputs: valid_inputs, m_valid.labels: one_hot_labels, m_valid.keep_probability: 1} - # valid_cost, valid_softpred, valid_raw_labels\ - # = sess.run([m_valid.cost, m_valid.softpred, m_valid.raw_labels], feed_dict=feed_dict) - # - # fpr, tpr, thresholds = metrics.roc_curve(valid_raw_labels, valid_softpred, pos_label=1) - # valid_auc = metrics.auc(fpr, tpr) - - valid_cost, valid_accuracy = sess.run([m_valid.cost, m_valid.accuracy], feed_dict=feed_dict) + valid_cost, valid_accuracy = sess.run( + [m_valid.cost, m_valid.accuracy], feed_dict=feed_dict + ) avg_valid_accuracy += valid_accuracy avg_valid_cost += valid_cost @@ -605,8 +623,9 @@ def do_validation(m_valid, sess, valid_file_dir, norm_dir, type='DNN'): import config as cg valid_batch_size = cg.batch_size - valid_data_set = dr.DataReader(valid_file_dir, valid_file_dir + '/Labels', norm_dir, w=cg.w, - u=cg.u, name="eval") + valid_data_set = dr.DataReader( + valid_file_dir, valid_file_dir + '/Labels', norm_dir, w=cg.w, u=cg.u, name="eval" + ) avg_valid_accuracy = 0. avg_valid_cost = 0. itr_sum = 0. @@ -620,7 +639,6 @@ def do_validation(m_valid, sess, valid_file_dir, norm_dir, type='DNN'): valid_inputs, valid_labels = valid_data_set.next_batch(valid_batch_size) if valid_data_set.file_change_checker(): - # print(itr_file) accuracy_list[itr_file] = avg_valid_accuracy / itr_sum cost_list[itr_file] = avg_valid_cost / itr_sum avg_valid_cost = 0. @@ -631,7 +649,8 @@ def do_validation(m_valid, sess, valid_file_dir, norm_dir, type='DNN'): if valid_data_set.eof_checker(): valid_data_set.reader_initialize() - print('Valid data reader was initialized!') # initialize eof flag & num_file & start index + print('Valid data reader was initialized!') + # initialize eof flag & num_file & start index break feed_dict = {m_valid.inputs: valid_inputs, m_valid.labels: valid_labels,