deepword.students package

Submodules

deepword.students.snn_learner module

class deepword.students.snn_learner.SNNData(target_src, same_src, diff_src)

Bases: deepword.students.snn_learner.SNNData

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.CMD(**kwargs)

Bases: object

get(key)
set(key, val)
class deepword.students.student_learner.DRRNLearner(hp: tensorflow.contrib.training.python.training.hparam.HParams, model_dir: str, train_data_dir: str)

Bases: deepword.students.student_learner.StudentLearner

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)

Bases: deepword.students.student_learner.StudentLearner

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)

Bases: deepword.students.student_learner.GenLearner

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)

Bases: deepword.students.student_learner.NLULearner

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)

Bases: deepword.students.student_learner.StudentLearner

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

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.

Module contents