From 8f596af4be1c2e5c4e4b4a7008ba96f412d40fca Mon Sep 17 00:00:00 2001
From: 游雁 <zhifu.gzf@alibaba-inc.com>
Date: 星期一, 29 四月 2024 14:32:43 +0800
Subject: [PATCH] batch
---
funasr/utils/misc.py | 53 +++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 39 insertions(+), 14 deletions(-)
diff --git a/funasr/utils/misc.py b/funasr/utils/misc.py
index a08f263..5eaa4f8 100644
--- a/funasr/utils/misc.py
+++ b/funasr/utils/misc.py
@@ -1,55 +1,80 @@
+import os
import io
+import shutil
+import logging
from collections import OrderedDict
import numpy as np
+from omegaconf import DictConfig, OmegaConf
def statistic_model_parameters(model, prefix=None):
var_dict = model.state_dict()
numel = 0
- for i, key in enumerate(sorted(list([x for x in var_dict.keys() if "num_batches_tracked" not in x]))):
+ for i, key in enumerate(
+ sorted(list([x for x in var_dict.keys() if "num_batches_tracked" not in x]))
+ ):
if prefix is None or key.startswith(prefix):
numel += var_dict[key].numel()
return numel
def int2vec(x, vec_dim=8, dtype=np.int32):
- b = ('{:0' + str(vec_dim) + 'b}').format(x)
+ b = ("{:0" + str(vec_dim) + "b}").format(x)
# little-endian order: lower bit first
- return (np.array(list(b)[::-1]) == '1').astype(dtype)
+ return (np.array(list(b)[::-1]) == "1").astype(dtype)
def seq2arr(seq, vec_dim=8):
return np.row_stack([int2vec(int(x), vec_dim) for x in seq])
-def load_scp_as_dict(scp_path, value_type='str', kv_sep=" "):
- with io.open(scp_path, 'r', encoding='utf-8') as f:
+def load_scp_as_dict(scp_path, value_type="str", kv_sep=" "):
+ with io.open(scp_path, "r", encoding="utf-8") as f:
ret_dict = OrderedDict()
for one_line in f.readlines():
one_line = one_line.strip()
pos = one_line.find(kv_sep)
- key, value = one_line[:pos], one_line[pos + 1:]
- if value_type == 'list':
- value = value.split(' ')
+ key, value = one_line[:pos], one_line[pos + 1 :]
+ if value_type == "list":
+ value = value.split(" ")
ret_dict[key] = value
return ret_dict
-def load_scp_as_list(scp_path, value_type='str', kv_sep=" "):
- with io.open(scp_path, 'r', encoding='utf8') as f:
+def load_scp_as_list(scp_path, value_type="str", kv_sep=" "):
+ with io.open(scp_path, "r", encoding="utf8") as f:
ret_dict = []
for one_line in f.readlines():
one_line = one_line.strip()
pos = one_line.find(kv_sep)
- key, value = one_line[:pos], one_line[pos + 1:]
- if value_type == 'list':
- value = value.split(' ')
+ key, value = one_line[:pos], one_line[pos + 1 :]
+ if value_type == "list":
+ value = value.split(" ")
ret_dict.append((key, value))
return ret_dict
+
def deep_update(original, update):
for key, value in update.items():
if isinstance(value, dict) and key in original:
+ if len(value) == 0:
+ original[key] = value
deep_update(original[key], value)
else:
- original[key] = value
\ No newline at end of file
+ original[key] = value
+
+
+def prepare_model_dir(**kwargs):
+
+ os.makedirs(kwargs.get("output_dir", "./"), exist_ok=True)
+
+ yaml_file = os.path.join(kwargs.get("output_dir", "./"), "config.yaml")
+ OmegaConf.save(config=kwargs, f=yaml_file)
+ print(kwargs)
+ logging.info("config.yaml is saved to: %s", yaml_file)
+
+ # model_path = kwargs.get("model_path")
+ # if model_path is not None:
+ # config_json = os.path.join(model_path, "configuration.json")
+ # if os.path.exists(config_json):
+ # shutil.copy(config_json, os.path.join(kwargs.get("output_dir", "./"), "configuration.json"))
--
Gitblit v1.9.1