![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ChatBot
Mars_阿火
一个学习者
展开
-
【ChatBot开发笔记】语料预处理——tokenize
GPT2模型的期望粒度是字而非词,故建立字典,通过tokenize完成两件事:切分语料,以[CLS]标志语料开头,以[SEP]划分说话对象完成字到字典id(tokenize_id)的转变def preprocess_raw_data(args, tokenizer, n_ctx): """ 对原始语料进行处理,将原始语料转换为用于train的token id,对于每个dialogue,将其处于成如下形式"[CLS]utterance1[SEP]utterance2[SEP]utte原创 2021-04-21 23:39:27 · 527 阅读 · 2 评论 -
【ChatBot开发笔记】随机数种
随机数种计算机内的随机都是伪随机,python就是基于Mersenne Twister。Mersenne Twister是现存最广泛测试的随机数发生器之一,但是它是完全确定的。在python中如果直接使用random.random(),那可以获取到均匀的随机数(随机数种随机),也可以可以通过设置随机数种然后调用random.random(),来得到完全一样的随机数,所以它并不适合安全用途。实验总需要打乱数据来操作,但如果每次都打乱数据后与上一次数据有差异,则实验结果没办法复现,改进的DEBUG也会变得原创 2021-04-21 23:38:47 · 153 阅读 · 0 评论 -
【ChatBot开发笔记】损失函数及准确率估计
def calculate_loss_and_accuracy(outputs, labels, device): """ 计算非pad_id的平均loss和准确率 :param outputs: :param labels: :param device: :return: """ logits = outputs[0] # 每个token用来预测下一个token的prediction_score,维度:[batch_size,token_l原创 2021-04-21 23:38:11 · 515 阅读 · 0 评论 -
【ChatBot开发笔记】语料处理——数据整形
def collate_fn(batch): """ 计算该batch中的所有sample的最长的input,并且通过末尾补0将其他input的长度向其对齐 """ global pad_id input_ids = [] btc_size = len(batch) # 该batch中最长的input,用于该batch的数据对齐 max_input_len = 0 # 计算该batch中input的最大长度 for btc_原创 2021-04-21 23:36:11 · 130 阅读 · 0 评论