shap.models.TeacherForcing

class shap.models.TeacherForcing(model, tokenizer=None, similarity_model=None, similarity_tokenizer=None, batch_size=128, device=None)[源代码]

使用 Teacher Forcing 技术为输出文本解释算法生成分数(对数几率)。

此类支持为转换器模型以及函数生成对数几率。在模型不可知的情况下(模型是函数),它期望一个 similarity_model 和一个 similarity_tokenizer 来近似模型生成的目标句子的对数几率分数。

__init__(model, tokenizer=None, similarity_model=None, similarity_tokenizer=None, batch_size=128, device=None)[源代码]

从给定的文本生成模型构建一个教师强制模型。

参数:
模型: 对象或函数

一个需要解释的预训练变压器模型或函数的对象。

tokenizer: 对象

一个分词器对象(PreTrainedTokenizer/PreTrainedTokenizerFast),用于对源句和目标句进行分词。

similarity_model: 对象

一个预训练的transformer模型对象,用于在模型不可知的情况下近似对数几率。

similarity_tokenizer: 对象

一个分词器对象(PreTrainedTokenizer/PreTrainedTokenizerFast),用于在模型无关的场景中对句子进行分词。

batch_size: int

模型推理和计算对数几率的批量大小(默认=128)。

设备: str

默认情况下,它会推断系统是否有GPU,并相应地设置设备。应为 ‘cpu’ 或 ‘cuda’ 或 pytorch 模型。

返回:
numpy.ndarray

使用模型生成目标句子ID的分数(对数几率)。

方法

__init__(model[, tokenizer, ...])

从给定的文本生成模型构建一个教师强制模型。

get_inputs(X[, padding_side])

该函数对源句子进行分词。

get_logodds(logits)

计算从logits的对数几率。

get_output_names(output)

通过使用 similarity_tokenizer 计算输出句子 ID 和输出名称来获取输出标记。

get_outputs(X)

该函数将输出句子分词并返回ID。

get_teacher_forced_logits(X, Y)

该函数为转换器模型生成logits。

load(in_file[, instantiate])

这是为了被子类重写并通过 super 调用。

model_inference(inputs, output_ids)

此函数为 TensorFlow 和 PyTorch 模型执行模型推理。

save(out_file)

将模型保存到给定的文件流中。

update_output_names(output)

该函数更新输出令牌。

get_inputs(X, padding_side='right')[源代码]

该函数对源句子进行分词。

在模型不可知的情况下,函数调用 model(X),期望返回一批输出句子,这些句子被标记化以计算输入。

参数:
X: numpy.ndarray

X 可能是一批文本或图像(模型无关的情况)。

返回:
dict

填充源句子ID和注意力掩码的字典,作为张量(基于similarity_model_type的“pt”或“tf”)。

get_logodds(logits)[源代码]

计算从logits的对数几率。

此函数通过 softmax 传递 logits,然后计算输出(目标句子)id 的对数概率。

参数:
logits: numpy.ndarray

从模型生成的logits数组。

返回:
numpy.ndarray

计算相应输出ID的对数几率。

get_output_names(output)[源代码]

通过使用 similarity_tokenizer 计算输出句子 ID 和输出名称来获取输出标记。

参数:
输出: numpy.ndarray

输出(句子/句子ID)用于解释行。

返回:
列表

输出令牌列表。

get_outputs(X)[源代码]

该函数将输出句子分词并返回ID。

参数:
X: numpy.ndarray

输出(句子/句子ID)用于解释行。

返回:
numpy.ndarray

一组输出(目标句子)ID的数组。

get_teacher_forced_logits(X, Y)[源代码]

该函数为转换器模型生成logits。

它通过使用教师强制技术为编码器-解码器模型以及仅解码器模型生成logits。

参数:
X: numpy.ndarray

包含一组掩码输入的数组。

Y: numpy.ndarray

包含目标句子/ID列表的数组。

返回:
numpy.ndarray

解码器输出目标句子ID的输出对数。

classmethod load(in_file, instantiate=True)[源代码]

这是为了被子类重写并通过 super 调用。

当未被实例化时,我们返回构造函数参数值。由于 Serializable 类没有构造函数参数,我们只返回一个空字典。

model_inference(inputs, output_ids)[源代码]

此函数为 TensorFlow 和 PyTorch 模型执行模型推理。

参数:
输入: dict

填充源句子ID和注意力掩码的字典,作为张量。

output_ids: numpy.ndarray

解码器输出ID的数组。

返回:
numpy.ndarray

返回模型的输出对数。

save(out_file)[源代码]

将模型保存到给定的文件流中。

update_output_names(output)[源代码]

该函数更新输出令牌。

它模仿了缓存机制,以便在每次解释新的一行时更新输出令牌。

参数:
输出: numpy.ndarray

输出(句子/句子ID)用于解释行。