Closed CreateSol closed 5 months ago
训练完数据正确率大概在0.4,请问怎么提高训练正确率呢?
这和你具体的场景和难度有关,需要你自己思考。下面是我和Deepseek-v2-chat的对话,供你参考
提高关系抽取模型的训练正确率通常需要从多个方面进行优化。以下是一些可能的策略:
数据清洗:确保训练数据的质量,去除噪声和错误标注的数据。 数据增强:通过合成新的训练样本来增加数据多样性,例如使用同义词替换、句子重组等方法。
更复杂的模型:尝试使用更深层次的神经网络或者更复杂的模型结构,如BERT、RoBERTa等预训练语言模型。 注意力机制:引入注意力机制来帮助模型更好地聚焦于关键信息。
学习率:调整学习率,找到适合当前数据和模型的最佳学习率。 优化器:尝试不同的优化器,如Adam、SGD等,并调整其参数。 批次大小:调整批次大小,以平衡计算效率和模型性能。
Dropout:使用Dropout来减少过拟合。 早停法:在验证集上的性能不再提升时停止训练。 权重衰减:应用权重衰减(L2正则化)来限制模型复杂度。
损失函数:尝试不同的损失函数,如交叉熵损失、合页损失等。 评价指标:确保评价指标与任务目标一致,并可能调整模型以优化该指标。
预训练模型:使用在大规模语料库上预训练的模型,并对其进行微调。
联合训练:将关系抽取任务与其他相关任务(如实体识别)联合训练,以提高泛化能力。
集成方法:通过模型集成(如Bagging、Boosting)来提高模型的稳定性和准确性。
专家知识:引入领域专家知识来指导模型训练,例如通过规则或先验知识。
迭代优化:持续迭代模型和训练过程,每次迭代后分析错误案例,针对性地进行改进。 在实施上述策略时,建议逐步进行,每次只改变一个变量,以便于分析每个改动对模型性能的影响。同时,确保有足够的计算资源和时间来进行充分的实验。最后,不要忽视模型的解释性,理解模型为何做出某些预测可以帮助你更好地调整模型。
啊这,有点抽象
还是训练的这套数据,您的可以在0.9,我的在0.4
还是训练的这套数据,您的可以在0.9,我的在0.4
使用提供的checkpoint呢,本地测试能到0.9吗
demo可以跑 test 跑报错
demo跑出来1.0
还是训练的这套数据,您的可以在0.9,我的在0.4
使用提供的checkpoint呢,本地测试能到0.9吗
Traceback (most recent call last):
File "D:\Coding\KG\Bert-In-Relation-Extraction\test.py", line 126, in
还是训练的这套数据,您的可以在0.9,我的在0.4
使用提供的checkpoint呢,本地测试能到0.9吗
Traceback (most recent call last): File "D:\Coding\KG\Bert-In-Relation-Extraction\test.py", line 126, in test(model,text_list,ent1,ent2,result) File "D:\Coding\KG\Bert-In-Relation-Extraction\test.py", line 92, in test logits = outputs[1] IndexError: tuple index out of range
这个和transformes版本有关,你可以print出来自己debug一下
还是训练的这套数据,您的可以在0.9,我的在0.4
使用提供的checkpoint呢,本地测试能到0.9吗
Traceback (most recent call last): File "D:\Coding\KG\Bert-In-Relation-Extraction\test.py", line 126, in test(model,text_list,ent1,ent2,result) File "D:\Coding\KG\Bert-In-Relation-Extraction\test.py", line 92, in test logits = outputs[1] IndexError: tuple index out of range
这个和transformes版本有关,你可以print出来自己debug一下
transformers 2.5.1
还是训练的这套数据,您的可以在0.9,我的在0.4
使用提供的checkpoint呢,本地测试能到0.9吗
Traceback (most recent call last): File "D:\Coding\KG\Bert-In-Relation-Extraction\test.py", line 126, in test(model,text_list,ent1,ent2,result) File "D:\Coding\KG\Bert-In-Relation-Extraction\test.py", line 92, in test logits = outputs[1] IndexError: tuple index out of range
这个和transformes版本有关,你可以print出来自己debug一下
transformers 2.5.1 这个版本
logits = outputs[1] 这个只有一个元素
还是训练的这套数据,您的可以在0.9,我的在0.4
使用提供的checkpoint呢,本地测试能到0.9吗
Traceback (most recent call last): File "D:\Coding\KG\Bert-In-Relation-Extraction\test.py", line 126, in test(model,text_list,ent1,ent2,result) File "D:\Coding\KG\Bert-In-Relation-Extraction\test.py", line 92, in test logits = outputs[1] IndexError: tuple index out of range
这个和transformes版本有关,你可以print出来自己debug一下
transformers 2.5.1 这个版本
logits = outputs[1] 这个只有一个元素
那对应修改一下试试
还是训练的这套数据,您的可以在0.9,我的在0.4
使用提供的checkpoint呢,本地测试能到0.9吗
Traceback (most recent call last): File "D:\Coding\KG\Bert-In-Relation-Extraction\test.py", line 126, in test(model,text_list,ent1,ent2,result) File "D:\Coding\KG\Bert-In-Relation-Extraction\test.py", line 92, in test logits = outputs[1] IndexError: tuple index out of range
这个和transformes版本有关,你可以print出来自己debug一下
transformers 2.5.1 这个版本
logits = outputs[1] 这个只有一个元素
那对应修改一下试试
改成0可以了,如何提高自己的模型准确率呢
还是训练的这套数据,您的可以在0.9,我的在0.4
使用提供的checkpoint呢,本地测试能到0.9吗
Traceback (most recent call last): File "D:\Coding\KG\Bert-In-Relation-Extraction\test.py", line 126, in test(model,text_list,ent1,ent2,result) File "D:\Coding\KG\Bert-In-Relation-Extraction\test.py", line 92, in test logits = outputs[1] IndexError: tuple index out of range
这个和transformes版本有关,你可以print出来自己debug一下
transformers 2.5.1 这个版本
logits = outputs[1] 这个只有一个元素
那对应修改一下试试
改成0可以了,如何提高自己的模型准确率呢
你得自己试着分析一下啊。。。 要么是代码问题,要么就是哪里复现错了。。。你这丢给我这个问题,我怎么帮助你。。。
刚才说了,用我的权重试着测试一下,正确率对不对,如果对,那就是你训练出了问题,你需要先检查训练集,测试集。 检查训练动态,参考上面列举的chatgpt的建议。假如不是训练问题,那就是代码问题,你需要读一读代码
还是训练的这套数据,您的可以在0.9,我的在0.4
使用提供的checkpoint呢,本地测试能到0.9吗
Traceback (most recent call last): File "D:\Coding\KG\Bert-In-Relation-Extraction\test.py", line 126, in test(model,text_list,ent1,ent2,result) File "D:\Coding\KG\Bert-In-Relation-Extraction\test.py", line 92, in test logits = outputs[1] IndexError: tuple index out of range
这个和transformes版本有关,你可以print出来自己debug一下
transformers 2.5.1 这个版本
logits = outputs[1] 这个只有一个元素
那对应修改一下试试
改成0可以了,如何提高自己的模型准确率呢
你得自己试着分析一下啊。。。 要么是代码问题,要么就是哪里复现错了。。。你这丢给我这个问题,我怎么帮助你。。。
刚才说了,用我的权重试着测试一下,正确率对不对,如果对,那就是你训练出了问题,你需要先检查训练集,测试集。 检查训练动态,参考上面列举的chatgpt的建议。假如不是训练问题,那就是代码问题,你需要读一读代码
您说的权重是什么参数,我刚入门不太理解小白,问的有些问题可能让你困扰了,不好意思
还是训练的这套数据,您的可以在0.9,我的在0.4
使用提供的checkpoint呢,本地测试能到0.9吗
Traceback (most recent call last): File "D:\Coding\KG\Bert-In-Relation-Extraction\test.py", line 126, in test(model,text_list,ent1,ent2,result) File "D:\Coding\KG\Bert-In-Relation-Extraction\test.py", line 92, in test logits = outputs[1] IndexError: tuple index out of range
这个和transformes版本有关,你可以print出来自己debug一下
transformers 2.5.1 这个版本
logits = outputs[1] 这个只有一个元素
那对应修改一下试试
改成0可以了,如何提高自己的模型准确率呢
你得自己试着分析一下啊。。。 要么是代码问题,要么就是哪里复现错了。。。你这丢给我这个问题,我怎么帮助你。。。 刚才说了,用我的权重试着测试一下,正确率对不对,如果对,那就是你训练出了问题,你需要先检查训练集,测试集。 检查训练动态,参考上面列举的chatgpt的建议。假如不是训练问题,那就是代码问题,你需要读一读代码
您说的权重是什么参数,我刚入门不太理解小白,问的有些问题可能让你困扰了,不好意思
readme里给了一个训练好的权重参数,下载下来,运行测试一下看对不对
您说的这个是吧?
parser.add_argument('--batch_size',type=int,default=32,help = '每批数据的数量')
parser.add_argument('--nepoch',type=int,default=5,help = '训练的轮次')
parser.add_argument('--lr',type=float,default=0.001,help = '学习率')
parser.add_argument('--gpu',type=bool,default=True,help = '是否使用gpu')
parser.add_argument('--num_workers',type=int,default=2,help='dataloader使用的线程数量')
parser.add_argument('--num_labels',type=int,default=len(id2rel),help='分类类数')
parser.add_argument('--data_path',type=str,default='./data',help='数据路径')
parser.add_argument('--batch_size',type=int,default=32,help = '每批数据的数量') parser.add_argument('--nepoch',type=int,default=5,help = '训练的轮次') parser.add_argument('--lr',type=float,default=0.001,help = '学习率') parser.add_argument('--gpu',type=bool,default=True,help = '是否使用gpu') parser.add_argument('--num_workers',type=int,default=2,help='dataloader使用的线程数量') parser.add_argument('--num_labels',type=int,default=len(id2rel),help='分类类数') parser.add_argument('--data_path',type=str,default='./data',help='数据路径')
知道了train(model,train_dataset,32,0.001,30)方法
训练完数据正确率大概在0.4,请问怎么提高训练正确率呢?