deepword.students package¶
Submodules¶
deepword.students.snn_learner module¶
-
class
deepword.students.snn_learner.SNNData(target_src, same_src, diff_src)¶
-
class
deepword.students.snn_learner.SNNLearner(hp: tensorflow.contrib.training.python.training.hparam.HParams, model_dir: str, train_data_dir: Optional[str], eval_data_path: Optional[str] = None)¶ Bases:
deepword.students.student_learner.StudentLearner-
get_snn_tjs(tjs: deepword.trajectory.Trajectory, tid_sid_set: List[Tuple[int, int]]) → Tuple[List[List[int]], List[int], List[List[int]], List[List[deepword.agents.utils.ActionMaster]]]¶
-
preprocess_input()¶
-
snn_data_loader(data_path: str, batch_size: int, training: bool) → Generator[deepword.students.snn_learner.SNNData, None, None]¶
-
test(device_placement: str = '/device:GPU:0', restore_from: Optional[str] = None) → Tuple[int, int]¶
-
train(n_epochs: int) → None¶
-
deepword.students.student_learner module¶
-
class
deepword.students.student_learner.DRRNLearner(hp: tensorflow.contrib.training.python.training.hparam.HParams, model_dir: str, train_data_dir: str)¶
-
class
deepword.students.student_learner.GenConcatActionsLearner(hp: tensorflow.contrib.training.python.training.hparam.HParams, model_dir: str, train_data_dir: Optional[str], eval_data_path: Optional[str] = None)¶ Bases:
deepword.students.student_learner.GenLearner- TODO: we choose action_mask in memory; however, when all admissible actions
are required, e.g. in pre-training without using q-values, we can use sys_action_mask. Notice that sys_action_mask won’t compatible with q-values, since the q-values are computed against action_mask.
-
classmethod
concat_actions(action_ids: List[numpy.ndarray], action_len: List[int], action_weight: numpy.ndarray, sep_val_id: int, sort_by_weight: bool = True) → Tuple[numpy.ndarray, numpy.ndarray]¶ concat given action_ids into one output str
-
class
deepword.students.student_learner.GenLearner(hp: tensorflow.contrib.training.python.training.hparam.HParams, model_dir: str, train_data_dir: Optional[str], eval_data_path: Optional[str] = None)¶
-
class
deepword.students.student_learner.GenMixActionsLearner(hp: tensorflow.contrib.training.python.training.hparam.HParams, model_dir: str, train_data_dir: Optional[str], eval_data_path: Optional[str] = None)¶
-
class
deepword.students.student_learner.NLUClassificationLearner(hp: tensorflow.contrib.training.python.training.hparam.HParams, model_dir: str, train_data_dir: Optional[str], eval_data_path: Optional[str] = None)¶
-
class
deepword.students.student_learner.NLULearner(hp: tensorflow.contrib.training.python.training.hparam.HParams, model_dir: str, train_data_dir: Optional[str], eval_data_path: Optional[str] = None)¶
-
class
deepword.students.student_learner.StudentLearner(hp: tensorflow.contrib.training.python.training.hparam.HParams, model_dir: str, train_data_dir: Optional[str], eval_data_path: Optional[str] = None)¶ Bases:
deepword.log.Logging-
classmethod
hs2tj_old2new(old_hs2tj: Dict[str, Dict[int, List[int]]]) → Dict[str, Dict[int, List[int]]]¶ sid need to be halved. :param old_hs2tj:
Returns:
-
classmethod
lst_str2am(tj: List[str], allow_unfinished_tj: bool = False) → List[deepword.agents.utils.ActionMaster]¶
-
classmethod
memo_old2new(old_memo: List[deeptextworld.agents.base_agent.DRRNMemoTeacher]) → List[deepword.agents.utils.Memolet]¶
-
safe_loading(model: Any, sess: tensorflow.python.client.session.Session, saver: tensorflow.python.training.saver.Saver, restore_from: str) → int¶ Load weights from restore_from to model. If weights in loaded model are incompatible with current model, try to load those weights that have the same name.
This method is useful when saved model lacks of training part, e.g. Adam optimizer.
- Parameters
model – A tensorflow model
sess – A tensorflow session
saver – A tensorflow saver
restore_from – the path to restore the model
- Returns
training steps
-
test() → None¶
-
classmethod
tjs_str2am(old_tjs: deepword.trajectory.Trajectory[str]) → deepword.trajectory.Trajectory[deepword.agents.utils.ActionMaster]¶
-
train(n_epochs: int) → None¶
-
classmethod
deepword.students.swag_learner module¶
-
class
deepword.students.swag_learner.SwagLearner(hp: tensorflow.contrib.training.python.training.hparam.HParams, model_dir: str, train_data_dir: Optional[str], eval_data_path: Optional[str] = None)¶ Bases:
deepword.students.student_learner.NLUClassificationLearner-
test(device_placement: str = '/device:GPU:0', restore_from: Optional[str] = None) → Tuple[int, int]¶
-
-
deepword.students.swag_learner.get_bert_input(start_str: List[str], ending_str: List[numpy.ndarray], tokenizer: deepword.tokenizers.Tokenizer, sep_val_id, cls_val_id, num_tokens, n_tokens_per_action) → Tuple[numpy.ndarray, numpy.ndarray, numpy.ndarray]¶ TODO: here we use n_tokens_per_actions for end str size
-
deepword.students.swag_learner.load_swag_data(fn_swag: str) → Tuple[List[str], List[numpy.ndarray], List[int]]¶ read swag data, make sure every start sentence has four ends
-
deepword.students.swag_learner.process_one_line(tokenizer: deepword.tokenizers.Tokenizer, start_str: str, ending_str: List[str], max_start_len: int, max_end_len: int) → Tuple[List[int], int, numpy.ndarray, numpy.ndarray]¶
deepword.students.utils module¶
-
deepword.students.utils.align_batch_str(ids: List[List[int]], str_len_allowance: int, padding_val_id: int, valid_len: List[int]) → Tuple[numpy.ndarray, numpy.ndarray]¶ Align a batch of string indexes. The maximum length will not exceed str_len_allowance. Each array of ids will be either padded or trimmed to reach the maximum length, notice that padded length won’t be counted in as valid length.
- Parameters
ids – a list of array of index (int)
str_len_allowance –
padding_val_id –
valid_len –
- Returns
aligned ids and aligned length
-
deepword.students.utils.batch_dqn_input(trajectories: List[List[deepword.agents.utils.ActionMaster]], tokenizer: deepword.tokenizers.Tokenizer, num_tokens: int, padding_val_id: int, with_action_padding: bool = False, max_action_size: Optional[int] = None) → Tuple[List[List[int]], List[int], List[List[int]]]¶
-
deepword.students.utils.dqn_input(trajectory: List[deepword.agents.utils.ActionMaster], tokenizer: deepword.tokenizers.Tokenizer, num_tokens: int, padding_val_id: int, with_action_padding: bool = False, max_action_size: Optional[int] = None) → Tuple[List[int], int, List[int]]¶ Given a trajectory (a list of ActionMaster), get trajectory indexes, length and master mask (master marked as 1 while action marked as 0). Pad the trajectory to num_tokens. Pad actions if required.
-
deepword.students.utils.tj2ids(trajectory: List[deepword.agents.utils.ActionMaster], tokenizer: deepword.tokenizers.Tokenizer, with_action_padding: bool = False, max_action_size: Optional[int] = None, padding_val_id: int = 0) → Tuple[List[int], List[int]]¶ Convert a trajectory (list of ActionMaster) into ids Compute segmentation ids for masters (1) and actions (0) pad actions if required.
