福建省住建厅网站官网,做响应式网站有什么插件,装修行业,视频类网站开发1、masked_tokens[]、token_masks[]介绍
masked_tokens和token_masks两个列表用于存储mask处理后的token#xff08;分词#xff09;结果和对应的mask标志。 masked_tokens列表存储经过mask处理后的分词结果。 token_masks列表存储与每个分词结果对应的mask标志。 2、示例…1、masked_tokens[]、token_masks[]介绍
masked_tokens和token_masks两个列表用于存储mask处理后的token分词结果和对应的mask标志。 masked_tokens列表存储经过mask处理后的分词结果。 token_masks列表存储与每个分词结果对应的mask标志。 2、示例说明
例如一个 masked_tokens[0]是
[C, N, [CH], (, c, 1, c, c, (, Br, ), c, c, c, 1, F, ), MASK, (, MASK, MASK, MASK, C, 1]
token_masks[0]是
[False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, True, False, True, True, True, False, False]
它们的长度都是28 3、代码示例
下面代码就是先对句子进行了token处理然后进行了mask处理
# 通过正则匹配对第一个句子sents1进行分词得到tokens。
tokens self._regex_match(sents1)
# 对tokens进行mask处理
m_tokens, token_masks self._mask_tokens(tokens, empty_maskmask)4、mask的类型
span mask def _mask_span(self, ts):curr_token 0masked []token_mask []mask_bools [True, False]weights [self.mask_prob, 1 - self.mask_prob]sampled_mask random.choices(mask_bools, weightsweights, klen(ts))while curr_token len(ts):# If mask, sample from a poisson dist to get length of maskif sampled_mask[curr_token]:mask_len torch.poisson(torch.tensor(self.span_lambda)).long().item()masked.append(self.mask_token)token_mask.append(True)curr_token mask_len# Otherwise dont maskelse:masked.append(ts[curr_token])token_mask.append(False)curr_token 1return masked, token_mask
随机对某些位置进行mask从泊松区取样得到mask的长度mask前后序列的长度可能会发生变化 replace mask def _mask_replace(self, ts):mask_bools [True, False]weights [self.mask_prob, 1 - self.mask_prob]token_mask random.choices(mask_bools, weightsweights, klen(ts))masked [self._mask_token(ts[i]) if m else ts[i] for i, m in enumerate(token_mask)]return masked, token_mask
根据权重Weight随机对某些位置进行maskmask前后序列的长度不会发生变化
权重Weight例如如果设定 self.mask_prob 0.7则掩码标记 True 的权重为 0.7掩码标记 False 的权重为 0.3