From f0160b2342a53b8d1cb460a168c04b0461e90f9e Mon Sep 17 00:00:00 2001 From: zhxfl <291221622@qq.com> Date: Fri, 30 Mar 2018 13:02:01 +0800 Subject: [PATCH] roll back --- fluid/DeepASR/data_utils/async_data_reader.py | 107 +++++++----------- .../augmentor/tests/test_data_trans.py | 6 +- .../data_utils/augmentor/trans_add_delta.py | 7 +- .../augmentor/trans_mean_variance_norm.py | 6 +- .../data_utils/augmentor/trans_splice.py | 6 +- fluid/DeepASR/data_utils/util.py | 4 +- fluid/DeepASR/train.py | 2 +- 7 files changed, 55 insertions(+), 83 deletions(-) diff --git a/fluid/DeepASR/data_utils/async_data_reader.py b/fluid/DeepASR/data_utils/async_data_reader.py index 09a73e3d..ffb37f5c 100644 --- a/fluid/DeepASR/data_utils/async_data_reader.py +++ b/fluid/DeepASR/data_utils/async_data_reader.py @@ -31,18 +31,16 @@ class SampleInfo(object): label_bin_path (str): File containing the label data. label_size (int): Byte count of the sample's label data. label_frame_num (int): Label number of the sample. - sample_name (str): key of the sample """ def __init__(self, feature_bin_path, feature_start, feature_size, feature_frame_num, feature_dim, label_bin_path, label_start, - label_size, label_frame_num, sample_name): + label_size, label_frame_num): self.feature_bin_path = feature_bin_path self.feature_start = feature_start self.feature_size = feature_size self.feature_frame_num = feature_frame_num self.feature_dim = feature_dim - self.sample_name = sample_name self.label_bin_path = label_bin_path self.label_start = label_start @@ -104,32 +102,24 @@ class SampleInfoBucket(object): feature_bin_path = self._feature_bin_paths[block_idx] feature_desc_path = self._feature_desc_paths[block_idx] + label_desc_lines = open(label_desc_path).readlines() feature_desc_lines = open(feature_desc_path).readlines() - label_desc_lines = None - if label_desc_path != "": - label_desc_lines = open(label_desc_path).readlines() - sample_num = int(feature_desc_lines[0].split()[1]) - if label_desc_path != "": - assert sample_num == int(label_desc_lines[0].split()[1]) + sample_num = int(label_desc_lines[0].split()[1]) + assert sample_num == int(feature_desc_lines[0].split()[1]) for i in xrange(sample_num): feature_desc_split = feature_desc_lines[i + 1].split() - sample_name = feature_desc_split[0] feature_start = int(feature_desc_split[2]) feature_size = int(feature_desc_split[3]) feature_frame_num = int(feature_desc_split[4]) feature_dim = int(feature_desc_split[5]) - label_start = -1 - label_size = -1 - label_frame_num = feature_frame_num - if label_desc_path != "": - label_desc_split = label_desc_lines[i + 1].split() - label_start = int(label_desc_split[2]) - label_size = int(label_desc_split[3]) - label_frame_num = int(label_desc_split[4]) - assert feature_frame_num == label_frame_num + label_desc_split = label_desc_lines[i + 1].split() + label_start = int(label_desc_split[2]) + label_size = int(label_desc_split[3]) + label_frame_num = int(label_desc_split[4]) + assert feature_frame_num == label_frame_num if self._split_sentence_threshold == -1 or \ self._split_perturb == -1 or \ @@ -139,7 +129,7 @@ class SampleInfoBucket(object): SampleInfo(feature_bin_path, feature_start, feature_size, feature_frame_num, feature_dim, label_bin_path, label_start, label_size, - label_frame_num, sample_name)) + label_frame_num)) #split sentence else: cur_frame_pos = 0 @@ -160,7 +150,7 @@ class SampleInfoBucket(object): * feature_dim * 4, cur_frame_len * feature_dim * 4, cur_frame_len, feature_dim, label_bin_path, label_start + cur_frame_pos * 4, cur_frame_len * - 4, cur_frame_len, sample_name)) + 4, cur_frame_len)) remain_frame_num -= cur_frame_len cur_frame_pos += cur_frame_len @@ -197,7 +187,7 @@ class AsyncDataReader(object): def __init__(self, feature_file_list, - label_file_list="", + label_file_list, drop_frame_len=512, proc_num=10, sample_buffer_size=1024, @@ -231,25 +221,16 @@ class AsyncDataReader(object): def generate_bucket_list(self, is_shuffle): if self._block_info_list is None: block_feature_info_lines = open(self._feature_file_list).readlines() + block_label_info_lines = open(self._label_file_list).readlines() + assert len(block_feature_info_lines) == len(block_label_info_lines) self._block_info_list = [] - if self._label_file_list != "": - block_label_info_lines = open(self._label_file_list).readlines() - #block_label_info_lines = open(self._label_file_list).readlines() - assert len(block_feature_info_lines) == len( - block_label_info_lines) - for i in xrange(0, len(block_feature_info_lines), 2): - block_info = (block_feature_info_lines[i], - block_feature_info_lines[i + 1], - block_label_info_lines[i], - block_label_info_lines[i + 1]) - self._block_info_list.append( - map(lambda line: line.strip(), block_info)) - else: - for i in xrange(0, len(block_feature_info_lines), 2): - block_info = (block_feature_info_lines[i], - block_feature_info_lines[i + 1], "", "") - self._block_info_list.append( - map(lambda line: line.strip(), block_info)) + for i in xrange(0, len(block_feature_info_lines), 2): + block_info = (block_feature_info_lines[i], + block_feature_info_lines[i + 1], + block_label_info_lines[i], + block_label_info_lines[i + 1]) + self._block_info_list.append( + map(lambda line: line.strip(), block_info)) if is_shuffle: self._rng.shuffle(self._block_info_list) @@ -337,24 +318,19 @@ class AsyncDataReader(object): sample_info.feature_dim, len(feature_bytes)) - if sample_info.label_bin_path != "": - label_bytes = read_bytes(sample_info.label_bin_path, - sample_info.label_start, - sample_info.label_size) - - assert sample_info.label_frame_num * 4 == len( - label_bytes), (sample_info.label_bin_path, - sample_info.label_array, - len(label_bytes)) - - label_array = struct.unpack( - 'I' * sample_info.label_frame_num, label_bytes) - label_data = np.array( - label_array, dtype='int64').reshape( - (sample_info.label_frame_num, 1)) - else: - label_data = np.zeros( - (sample_info.label_frame_num, 1), dtype='int64') + label_bytes = read_bytes(sample_info.label_bin_path, + sample_info.label_start, + sample_info.label_size) + + assert sample_info.label_frame_num * 4 == len(label_bytes), ( + sample_info.label_bin_path, sample_info.label_array, + len(label_bytes)) + + label_array = struct.unpack('I' * sample_info.label_frame_num, + label_bytes) + label_data = np.array( + label_array, dtype='int64').reshape( + (sample_info.label_frame_num, 1)) feature_frame_num = sample_info.feature_frame_num feature_dim = sample_info.feature_dim @@ -364,11 +340,12 @@ class AsyncDataReader(object): feature_data = np.array( feature_array, dtype='float32').reshape(( sample_info.feature_frame_num, sample_info.feature_dim)) - sample_data = (feature_data, label_data, - sample_info.sample_name) + + sample_data = (feature_data, label_data) for transformer in self._transformers: # @TODO(pkuyym) to make transfomer only accept feature_data sample_data = transformer.perform_trans(sample_data) + while order_id != out_order[0]: time.sleep(0.001) @@ -418,26 +395,24 @@ class AsyncDataReader(object): batch_samples.append(sample) lod.append(lod[-1] + sample[0].shape[0]) if len(batch_samples) == batch_size: - feature, label, name_lst = batch_to_ndarray( - batch_samples, lod) + feature, label = batch_to_ndarray(batch_samples, lod) feature = conv_to_shared(feature) label = conv_to_shared(label) lod = conv_to_shared(np.array(lod).astype('int64')) - batch_queue.put((feature, label, lod, name_lst)) + batch_queue.put((feature, label, lod)) batch_samples = [] lod = [0] if len(batch_samples) >= minimum_batch_size: - (feature, label, name_lst) = batch_to_ndarray(batch_samples, - lod) + (feature, label) = batch_to_ndarray(batch_samples, lod) feature = conv_to_shared(feature) label = conv_to_shared(label) lod = conv_to_shared(np.array(lod).astype('int64')) - batch_queue.put((feature, label, lod, name_lst)) + batch_queue.put((feature, label, lod)) batch_queue.put(EpochEndSignal()) diff --git a/fluid/DeepASR/data_utils/augmentor/tests/test_data_trans.py b/fluid/DeepASR/data_utils/augmentor/tests/test_data_trans.py index 9f76a9f8..157ab02e 100644 --- a/fluid/DeepASR/data_utils/augmentor/tests/test_data_trans.py +++ b/fluid/DeepASR/data_utils/augmentor/tests/test_data_trans.py @@ -22,7 +22,7 @@ class TestTransMeanVarianceNorm(unittest.TestCase): feature = np.zeros((2, 120), dtype="float32") feature.fill(1) trans = trans_mean_variance_norm.TransMeanVarianceNorm(self._file_path) - (feature1, label1, name) = trans.perform_trans((feature, None, None)) + (feature1, label1) = trans.perform_trans((feature, None)) (mean, var) = trans.get_mean_var() feature_flat1 = feature1.flatten() feature_flat = feature.flatten() @@ -70,7 +70,7 @@ class TestTransAddDelta(unittest.TestCase): feature[2, 0:40].fill(3) feature[3, 0:40].fill(4) trans = trans_add_delta.TransAddDelta() - (feature, label, name) = trans.perform_trans((feature, None, None)) + (feature, label) = trans.perform_trans((feature, None)) self.assertAlmostEqual(feature.shape[0], 4) self.assertAlmostEqual(feature.shape[1], 120) self.assertAlmostEqual(1.0, feature[0][0]) @@ -93,7 +93,7 @@ class TestTransSplict(unittest.TestCase): feature[i, :].fill(i) trans = trans_splice.TransSplice() - (feature, label, name) = trans.perform_trans((feature, None, None)) + (feature, label) = trans.perform_trans((feature, None)) self.assertEqual(feature.shape[1], 110) for i in xrange(8): diff --git a/fluid/DeepASR/data_utils/augmentor/trans_add_delta.py b/fluid/DeepASR/data_utils/augmentor/trans_add_delta.py index caa3f4c0..dc1a4fa4 100644 --- a/fluid/DeepASR/data_utils/augmentor/trans_add_delta.py +++ b/fluid/DeepASR/data_utils/augmentor/trans_add_delta.py @@ -32,9 +32,9 @@ class TransAddDelta(object): Args: sample(object,tuple): contain feature numpy and label numpy Returns: - (feature, label, sample_name) + (feature, label) """ - (feature, label, sample_name) = sample + (feature, label) = sample frame_dim = feature.shape[1] d_frame_dim = frame_dim * 3 head_filled = 5 @@ -64,8 +64,7 @@ class TransAddDelta(object): start * d_frame_dim + 2 * frame_dim, frame_dim, nframe, d_frame_dim) mat.shape = tmp_shape - return (mat[head_filled:mat.shape[0] - tail_filled, :], label, - sample_name) + return (mat[head_filled:mat.shape[0] - tail_filled, :], label) def _regress(self, data_in, start_in, data_out, start_out, size, n, step): """ regress diff --git a/fluid/DeepASR/data_utils/augmentor/trans_mean_variance_norm.py b/fluid/DeepASR/data_utils/augmentor/trans_mean_variance_norm.py index e8f40d62..5b541d42 100644 --- a/fluid/DeepASR/data_utils/augmentor/trans_mean_variance_norm.py +++ b/fluid/DeepASR/data_utils/augmentor/trans_mean_variance_norm.py @@ -53,9 +53,9 @@ class TransMeanVarianceNorm(object): Args: sample(object):input sample, contain feature numpy and label numpy Returns: - (feature, label, sample_name) + (feature, label) """ - (feature, label, sample_name) = sample + (feature, label) = sample shape = feature.shape assert len(shape) == 2 nfeature_len = shape[0] * shape[1] @@ -68,4 +68,4 @@ class TransMeanVarianceNorm(object): feature[ncur_idx:ncur_idx + self._nLen] = block ncur_idx += self._nLen feature = feature.reshape(shape) - return (feature, label, sample_name) + return (feature, label) diff --git a/fluid/DeepASR/data_utils/augmentor/trans_splice.py b/fluid/DeepASR/data_utils/augmentor/trans_splice.py index af7df0ea..94f5258d 100644 --- a/fluid/DeepASR/data_utils/augmentor/trans_splice.py +++ b/fluid/DeepASR/data_utils/augmentor/trans_splice.py @@ -30,9 +30,9 @@ class TransSplice(object): Args: sample(object): input sample(feature, label) Return: - (feature, label, sample_name) + (feature, label) """ - (feature, label, sample_name) = sample + (feature, label) = sample nframe_num = feature.shape[0] nframe_dim = feature.shape[1] nnew_frame_dim = nframe_dim * ( @@ -61,4 +61,4 @@ class TransSplice(object): np.copyto(ret[i * nnew_frame_dim:(i + 1) * nnew_frame_dim], mat[i * nframe_dim:i * nframe_dim + nnew_frame_dim]) ret = ret.reshape((nframe_num, nnew_frame_dim)) - return (ret, label, sample_name) + return (ret, label) diff --git a/fluid/DeepASR/data_utils/util.py b/fluid/DeepASR/data_utils/util.py index 797408c4..5d519c0a 100644 --- a/fluid/DeepASR/data_utils/util.py +++ b/fluid/DeepASR/data_utils/util.py @@ -42,14 +42,12 @@ def batch_to_ndarray(batch_samples, lod): batch_feature = np.zeros((lod[-1], frame_dim), dtype="float32") batch_label = np.zeros((lod[-1], 1), dtype="int64") start = 0 - name_lst = [] for sample in batch_samples: frame_num = sample[0].shape[0] batch_feature[start:start + frame_num, :] = sample[0] batch_label[start:start + frame_num, :] = sample[1] start += frame_num - name_lst.append(sample[2]) - return (batch_feature, batch_label, name_lst) + return (batch_feature, batch_label) def split_infer_result(infer_seq, lod): diff --git a/fluid/DeepASR/train.py b/fluid/DeepASR/train.py index 8b9116a7..446e9e0a 100644 --- a/fluid/DeepASR/train.py +++ b/fluid/DeepASR/train.py @@ -220,7 +220,7 @@ def train(args): train_data_reader.batch_iterator(args.batch_size, args.minimum_batch_size)): # load_data - (features, labels, lod, name_lst) = batch_data + (features, labels, lod) = batch_data feature_t.set(features.ndarray, place) feature_t.set_lod([lod.ndarray]) label_t.set(labels.ndarray, place) -- GitLab