在使用keras_bert精调中文albert模型的过程中,发现采用开源的Tokenizer代码,会出现训练过程中张量形状不匹配的问题。
进一步探索,会发现Tokenizer会默认在句子的前后加上’CLS’和’SEP’标识,导致出来的id数目会比设置的maxlen多2个(bert模型自带的机制),因此导致后续定义模型时针对输入张量定义形状时,会出现问题:
class OurTokenizer(Tokenizer):
def _tokenize(self, text):
R = []
for c in text:
if c in self._token_dict:
R.append(c)
elif self._is_space(c):
R.append(