wakafengfan / simcse-pytorch

pytorch版simcse无监督语义相似模型
MIT License
22 stars 3 forks source link

方便提供下复现的python dependency吗? #1

Open shm007g opened 3 years ago

wakafengfan commented 3 years ago

已更新到readme

shm007g commented 3 years ago

我用的BERT BASE,感觉和 bojone的实现,差别较大呀. :\

shawroad commented 3 years ago

你好,看完你的代码有个问题想咨询一下, 在数据预测处理的时候,我们是将所有的数据打乱,假设输入['你好吗', '今天吃了馒头', ’我爱上你了‘, '马上毕业了'], 则模型输入为 4×768, 接下来就是计算损失, 这里将损失计算最终转化为分类问题,针对刚才那个数据,label应该是[[False, True, False, False], [True, False, False, False], [False, False, False, True], [False, False, True, False], 在损失计算时,我们还会将模型输出进行自己和自己矩阵乘,变为4x4的相关性矩阵。接着计算分类损失。 看样子,在一个batch内,应该第一个和第二个数据是相似的,第三个和第四个数据相似 依次类推才是,为啥代码中的数据预处理是随机组织的。

wakafengfan commented 3 years ago

我用的BERT BASE,感觉和 bojone的实现,差别较大呀. :\

这里用的是roberta-wwm,和bojone实现里用roberta-wwm的结果差别不大

wakafengfan commented 3 years ago

你好,看完你的代码有个问题想咨询一下, 在数据预测处理的时候,我们是将所有的数据打乱,假设输入['你好吗', '今天吃了馒头', ’我爱上你了‘, '马上毕业了'], 则模型输入为 4×768, 接下来就是计算损失, 这里将损失计算最终转化为分类问题,针对刚才那个数据,label应该是[[False, True, False, False], [True, False, False, False], [False, False, False, True], [False, False, True, False], 在损失计算时,我们还会将模型输出进行自己和自己矩阵乘,变为4x4的相关性矩阵。接着计算分类损失。 看样子,在一个batch内,应该第一个和第二个数据是相似的,第三个和第四个数据相似 依次类推才是,为啥代码中的数据预处理是随机组织的。

你好,loss计算过程确实是这样,但没理解”随机组织“具体是指哪里?

shawroad commented 3 years ago

你好,看完你的代码有个问题想咨询一下, 在数据预测处理的时候,我们是将所有的数据打乱,假设输入['你好吗', '今天吃了馒头', ’我爱上你了‘, '马上毕业了'], 则模型输入为 4×768, 接下来就是计算损失, 这里将损失计算最终转化为分类问题,针对刚才那个数据,label应该是[[False, True, False, False], [True, False, False, False], [False, False, False, True], [False, False, True, False], 在损失计算时,我们还会将模型输出进行自己和自己矩阵乘,变为4x4的相关性矩阵。接着计算分类损失。 看样子,在一个batch内,应该第一个和第二个数据是相似的,第三个和第四个数据相似 依次类推才是,为啥代码中的数据预处理是随机组织的。

你好,loss计算过程确实是这样,但没理解”随机组织“具体是指哪里?

数据输入的那部分我的理解是对的吗? 是将所有句子打乱 然后输入模型?

shawroad commented 3 years ago

你好,看完你的代码有个问题想咨询一下, 在数据预测处理的时候,我们是将所有的数据打乱,假设输入['你好吗', '今天吃了馒头', ’我爱上你了‘, '马上毕业了'], 则模型输入为 4×768, 接下来就是计算损失, 这里将损失计算最终转化为分类问题,针对刚才那个数据,label应该是[[False, True, False, False], [True, False, False, False], [False, False, False, True], [False, False, True, False], 在损失计算时,我们还会将模型输出进行自己和自己矩阵乘,变为4x4的相关性矩阵。接着计算分类损失。 看样子,在一个batch内,应该第一个和第二个数据是相似的,第三个和第四个数据相似 依次类推才是,为啥代码中的数据预处理是随机组织的。

你好,loss计算过程确实是这样,但没理解”随机组织“具体是指哪里?

难道输入的时候,句子的组织形式是: ['你好吗', '你好吗', '今天吃了馒头','今天吃了馒头', ’我爱上你了‘, ’我爱上你了‘, '马上毕业了','马上毕业了']?

wakafengfan commented 3 years ago

你好,看完你的代码有个问题想咨询一下, 在数据预测处理的时候,我们是将所有的数据打乱,假设输入['你好吗', '今天吃了馒头', ’我爱上你了‘, '马上毕业了'], 则模型输入为 4×768, 接下来就是计算损失, 这里将损失计算最终转化为分类问题,针对刚才那个数据,label应该是[[False, True, False, False], [True, False, False, False], [False, False, False, True], [False, False, True, False], 在损失计算时,我们还会将模型输出进行自己和自己矩阵乘,变为4x4的相关性矩阵。接着计算分类损失。 看样子,在一个batch内,应该第一个和第二个数据是相似的,第三个和第四个数据相似 依次类推才是,为啥代码中的数据预处理是随机组织的。

你好,loss计算过程确实是这样,但没理解”随机组织“具体是指哪里?

难道输入的时候,句子的组织形式是: ['你好吗', '你好吗', '今天吃了馒头','今天吃了馒头', ’我爱上你了‘, ’我爱上你了‘, '马上毕业了','马上毕业了']?

一个batch里确实是这种形式