Git Product home page Git Product logo

bert-chinese-text-classification-pytorch's Issues

单机多GPU运行

我想在单机上使用多个GPU来训练,在run.py文件的最开始加上了
import os
os.environ["CUDA_VISIBLE_DEVICES"] = "4,5,6,7"
并且注释掉了
np.random.seed(1)
torch.manual_seed(1)
torch.cuda.manual_seed_all(1)
torch.backends.cudnn.deterministic = True
但是还是只使用的GPU:4这一个GPU

这条语句在tensorflow中可以正常运行的,但是在pytroch中为什么会失效了呢?
在线求解~

关于pre-trained model中vocabulary的问题

想问下是不是vocabulary中的内容对训练是没有影响的。感觉训练的时候vocabulary是由build_vocab训练出来的。想求证下我的想法是不是正确的~

> > 我也是bert跑出来准确率50左右

我也是bert跑出来准确率50左右
为什么我按照源代码 原数据集训练出来的准确率 和你的差很多呢 而且时间也很长
我检查了下是词表出现了乱码,你可以看看bert里vocab.txt这个文件打开是不是正常的汉字,erine是正常的
我看了一下 我bert里vocab.txt这个文件中的文字跟作者放的链接里面的是一样的 但是我觉得这个中文有点儿奇怪

https://blog.csdn.net/m0_38133212/article/details/88614153

谢谢您 十分感谢

Originally posted by @ZMM6128 in #46 (comment)

模型为什么保存的ckpt

您好 pytorch 训练保存的模型为什么是.ckpt 不应该 .bin 文件吗, ckpt 不是tensorflow 的模型保存形式吗

您好,这个训练好的模型就是那个model下的.ckpt文件吧,这个模型就是生成词向量的模型吗,我如果想训练自己的词向量模型是不是就用自己的预料就行了?还有,这个模型怎么去用呢?希望不要嫌弃我,我刚开始学这个。。。。期待您的信息回复

您好,这个训练好的模型就是那个model下的.ckpt文件吧,这个模型就是生成词向量的模型吗,我如果想训练自己的词向量模型是不是就用自己的预料就行了?还有,这个模型怎么去用呢?希望不要嫌弃我,我刚开始学这个。。。。期待您的信息回复

求大佬帮助一下,项目架构问题

大佬,作为一个新人,对于代码的理解力还不是么强!所以相结合博客来学习一下!比如:项目中的BERT+CNN进行训练,那么此处的CNN是不是TextCNN那一套?BERT最终训练出来的是字向量还是句子向量?而且模型的整体输入流输出流是什么!还希望能帮忙解答一下谢谢

关于中文的vocab.txt

我从bert_pretrain文件夹中给出的链接中下载的文件解压出的文件里面并不包含vocab.txt文件,我是否需要另外的下载呢?能否给出下载链接?或者是需要自己构建?

我写了一个predict

image

Connected to pydev debugger (build 181.4668.75)
打印texts:
(tensor([[ 101, 872, 1962, 1435, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0],
[ 101, 872, 1962, 1004, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0]]), tensor([4, 4]), tensor([[1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0],
[1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0]]))
Traceback (most recent call last):
File "D:\Software\pycharm\PyCharm 2018.1.2\helpers\pydev\pydevd.py", line 1664, in
main()
File "D:\Software\pycharm\PyCharm 2018.1.2\helpers\pydev\pydevd.py", line 1658, in main
globals = debugger.run(setup['file'], None, None, is_module)
File "D:\Software\pycharm\PyCharm 2018.1.2\helpers\pydev\pydevd.py", line 1068, in run
pydev_imports.execfile(file, globals, locals) # execute the script
File "D:\Software\pycharm\PyCharm 2018.1.2\helpers\pydev_pydev_imps_pydev_execfile.py", line 18, in execfile
exec(compile(contents+"\n", file, 'exec'), glob, loc)
File "D:/Program/Python/bert_classification_pytorch/predict_bak.py", line 48, in
label = bert_model.predict(test_demo)
File "D:/Program/Python/bert_classification_pytorch/predict_bak.py", line 37, in predict
outputs = self.model(texts)
File "D:\Program\Python\bert_classification_pytorch\venv\lib\site-packages\torch\nn\modules\module.py", line 477, in call
result = self.forward(*input, **kwargs)
File "D:\Program\Python\bert_classification_pytorch\models\bert.py", line 42, in forward
mask = x[2] # 对padding部分进行mask,和句子一个size,padding部分用0表示,如:[1, 1, 1, 1, 0, 0]
IndexError: tuple index out of range

我这是哪里出错了呢?模型没有动过……
请各位大佬帮忙看下,非常感谢~

训练好的模型如何进行要存

你好,请问训练好的模型应该是bert.ckpt文件吧,这个文件请问要怎么用来进行预测呢,这个是pytorch保存的模型文件吗

torch 1.5.0 报错:add被弃用

..\torch\csrc\utils\python_arg_parser.cpp:756: UserWarning: This overload of add_ is deprecated:
        add_(Number alpha, Tensor other)
Consider using one of the following signatures instead:
        add_(Tensor other, *, Number alpha)

请问如何解决?

> > 为什么我每次跑完都要一两天的时间呢?求大佬们帮忙

为什么我每次跑完都要一两天的时间呢?求大佬们帮忙
因为evaluation是在cpu上做的,试一下把evaluation放在gpu上以tensor的形式来做

谢谢大佬的回答。具体改法是不是把train_eval.py中.cpu()的地方改为.gpu()就可以了(gpu环境以及有了)?原文件里只说了训练时间:30分钟,也不知道怎么训练这么快的,哼😕(吐槽一下嘻嘻)

实际上这时候这个张量本身就是在GPU里面了,只要把cpu()去掉即可,并且要把原本允许ndarry作为参数的sklearn.metrics换为能够张量计算的方式。其他的都不用改。下面是我这边修改的这块代码,可以参考一下。
if total_batch % 100 == 0:
# 每多少轮输出在训练集和验证集上的效果
true = (labels).data
predic = torch.max(outputs.data, 1)[1]
total = true.size(0)
correct = (predic == true).sum().item()
train_acc = correct / total
dev_acc, dev_loss = evaluate(config, model, dev_iter)
if dev_loss < dev_best_loss:
dev_best_loss = dev_loss
torch.save(model.state_dict(), config.save_path)
improve = '*'
last_improve = total_batch
else:
improve = ''
time_dif = get_time_dif(start_time)
msg = 'Iter: {0:>6}, Train Loss: {1:>5.2}, Train Acc: {2:>6.2%}, Val Loss: {3:>5.2}, Val Acc: {4:>6.2%}, Time: {5} {6}'
print(msg.format(total_batch, loss.item(), train_acc, dev_loss, dev_acc, time_dif, improve))
model.train()

No such file or directory: 'THUCNews/saved_dict/bert.ckpt'

按照流程clone项目,下载bert预训练集与vocab装入对应目录,运行run.py,抛出如下错误,请问如何修改?

python3 run.py --model bert   
Loading data...
180000it [00:28, 6288.85it/s]
10000it [00:01, 6258.25it/s]
10000it [00:01, 6435.75it/s]
Time usage: 0:00:32
Epoch [1/3]
Traceback (most recent call last):
  File "run.py", line 37, in <module>
    train(config, model, train_iter, dev_iter, test_iter)
  File "/Users/temco/Downloads/Bert-Chinese-Text-Classification-Pytorch-master/train_eval.py", line 65, in train
    torch.save(model.state_dict(), config.save_path)
  File "/Users/temco/Library/Python/3.7/lib/python/site-packages/torch/serialization.py", line 260, in save
    return _with_file_like(f, "wb", lambda f: _save(obj, f, pickle_module, pickle_protocol))
  File "/Users/temco/Library/Python/3.7/lib/python/site-packages/torch/serialization.py", line 183, in _with_file_like
    f = open(f, mode)
FileNotFoundError: [Errno 2] No such file or directory: 'THUCNews/saved_dict/bert.ckpt'

预训练代码

请问之后会提高bert chinese pytorch版本的预训练(init_checkpoint=bert.bin)文件么?

关于长文本

我看到您的代码是直接把长文本截断,但是这样是否会降低performance呢?有没有更好的方案呢?

ModuleNotFoundError: No module named 'pytorch_pretrained_bert'

python3 run.py --model bert

Traceback (most recent call last):
File "run.py", line 5, in
from train_eval import train, init_network
File "/models/Bert-Chinese-Text-Classification-Pytorch/train_eval.py", line 9, in
from pytorch_pretrained_bert.optimization import BertAdam
ModuleNotFoundError: No module named 'pytorch_pretrained_bert'

train_eval.py依然需要pytorch_pretrained_bert

ERNIE.py与bert.py

您好,请问ERNIE.py体现ERNIE模型的地方在哪里呢?为什么我看不出来和bert.py有什么大的区别?

bug: DatasetIterater的residue属性错误

`

class DatasetIterater(object):

def __init__(self, batches, batch_size, device):

    self.batch_size = batch_size

    self.batches = batches

    self.n_batches = len(batches) // batch_size

    self.residue = False  # 记录batch数量是否为整数

    if len(batches) % self.n_batches != 0:

        self.residue = True

    self.index = 0

    self.device = device

`
self.residue = True if len(batches) % self.batch_size != 0 else False

len(batches)=58, batch_size = 32, n_batches = 1,此时self.residue应该为True,但是 len(batches) % self.n_batches == 0

No such file or directory: './bert_pretrain\\bert_config.json'

我感觉是我的在文件夹bert_pretrain中放的东西不对,README中写了要放:
pytorch_model.bin
bert_config.json
vocab.txt
我下载了链接中的bert-base-chiness并直接解压到了bert_pretrain文件夹中,但是没有看到要求中的文件。
(好像下错了,欸嘿

关于分类任务的效果

使用ERNIE预训练模型
我发现用thucnews数据集,效果和您的项目的readme是一样的
但是换一个数据集,比如chnsenticorp数据集,无法复现到百度ERNIE报告的效果。百度报告的结果超过94%,但是这里只能得到90。请问您有试验过thucnews之外的数据集么?

CUDA out of memory

您好,请问下您,跑ERNIE模型时,报CUDA out of memory的错误。我的显卡是1050 Ti

utils.py文件有个小bug

DatasetIterater中的__next__(self)函数
将elif self.index > self.n_batches 修改为elif self.index >= self.n_batches
如果self.residue=False且self.index = self.n_batches时应该就迭代完成了,但是按该代码还会再取一次

您好!问下下面代码对不同的层设置不同的weight_decay作用是什么呢?

no_decay = ['bias', 'LayerNorm.bias', 'LayerNorm.weight']
optimizer_grouped_parameters = [
{'params': [p for n, p in param_optimizer if not any(nd in n for nd in no_decay)], 'weight_decay': 0.01},
{'params': [p for n, p in param_optimizer if any(nd in n for nd in no_decay)], 'weight_decay': 0.0}]

no_decay三种层和其他的层相比有什么区别嘛?谢谢!

如何训练英文数据

作者你好,我现在有一个英文数据集想做多分类,数据格式一样,是否只需将bert预训练模型、词表换成英文的就行呢

求求大佬帮助!关于预测的文件

请问预测应该如何写呢😂,想要将保存的最好的参数预测自己的语料,文本情感分析用,毕设急求,非常希望大佬解答!!!

支持并行训练嘛

支持多GPU并行嘛,我有3张卡,希望把句子长度和batchsize都放大点

RuntimeError: CUDA out of memory.

问一下,为什么batch_size 设置过大或者pad_size设置过大就会出现这个问题呢
比如batch_size设置为128或pad_size设置为200,就会报CUDA内存不够的错误,设置较小就能正常运行...
RuntimeError: CUDA out of memory. Tried to allocate 46.00 MiB (GPU 0; 7.43 GiB total capacity; 6.87 GiB already allocated; 14.94 MiB free; 83.05 MiB cached)

该如何解决???

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.