最近做实验遇到一些问题,并记录下来,包括代码编写和模型结构的问题。其中有一些已经解决,也有至今不明白的问题,供大家参考。我研究的是使用深度学习的模型进行情感分析。
1、出现错误OSError: [E050] Can’t find model ‘en_core_web_sm’. It doesn’t seem to be a s
解决:以管理员权限运行shell脚本,输入命令python37 -m spacy download en解决
2、if name='main’什么意思?
若这行代码在A文件中,他表示下面部分的代码在运行A文件时会运行,但运行导入A文件的B文件时,代码块不会运行
3、model.train()与model.eval()的用法?
如果模型中有BN层(Batch Normalization)和Dropout,需要在训练时添加model.train(),在测试时添加model.eval()。
其中model.train()是保证BN层用每一批数据的均值和方差,而model.eval()是保证BN用全部训练数据的均值和方差;
而对于Dropout,model.train()是随机取一部分网络连接来训练更新参数,而model.eval()是利用到了所有网络连接。
4、防止过拟合的方法:dropout、LSR(标签平滑标准化),其中LSR在训练过程中给样本的标签不再是全概率,而是0.1、0.9这样的数值。在提出AEN模型的论文中提到了该方法。更多方法见第15。
5、由于向量维度与权重不匹配,且权重不可更改,如何在不增加参数的前提下,更改向量维度?
解决方法:在调用使用权重的方法时,传递参数的位置处更改参数的传递值。
6、f1值很低,与准确率相差较大,为什么?
不明白为什么,但bert可能提高f1.实验发现使用glove训练词向量测试集准确率和f1相差能达0.3,而使用bert训练词向量,准确率和f1差距不大。
7、为了减少训练参数数量,可以使用池化减小向量维度
8、模型使用LSTM捕捉全局特征,BLSTM能捕捉单词前后向的语义信息,但实验结果显示,BLSTM不如单向的LSTM的效果好,为什么?
9、bert训练时间长达几个小时,如何在不影响模型效果的基础上提高训练速度?
知识蒸馏、降低max seq len、减小layers、GPU训练、LAMB优化器
10、如何计算程序运行时间?
import time
t1=time.time
model.train()
t2=time.time
t=t2-t1
通常我们只计算模型训练的时间就可以
11、运行结果出现
cannot import name 'SAVE_STATE_WARNING' from 'torch.optim.lr_scheduler'
'lengths' argument should be a 1D CPU int64 tensor, but got 1D cuda:0 Long tensor
在运行结果中,会给出具体出错的文件,在其中一个文件中(忘了什么文件),将_VF._pack_padded_sequence(input, lengths, batch_first)改成_VF._pack_padded_sequence(input, lengths.cpu(), batch_first)
12、RuntimeError: CUDA out of memory
运行网络模型过程,占满了内存,引发中断,可以尝试减小输入的Batch-size,但是我的模型中使用了bert,尝试了很多方法都没解决。下main的方法知识对我的模型来说不可行,如果你的模型不是很大,可以尝试减小batch_size和max_seq_len。
错误方法一:释放内存。在错的那一行前,加上以下代码
if hasattr(torch.cuda, ‘empty_cache’):
torch.cuda.empty_cache()
错误方法二:指定gpu id
错误方法三:修改max_seq_len,85->65
错误方法四:embed_dim=100
13、AttributeError: cannot assign module before Module.init() call
【error】在初始化函数调用前不能分配模块,调用了自定义的类,但是在自定义的类的__init__函数下面没有写super( XXX, self ).init()
14、RuntimeError: [enforce fail at ..\c10\core\CPUAllocator.cpp:75] data. DefaultCPUAllocator: not enough memory: you tried to allocate 355123200 bytes. Buy new RAM!
减小batch_size
15、每个epoch的acc呈递减趋势,为什么?有什么解决方法?
过拟合。使用Bert一定会导致过拟合,也有很多解决办法.
常见的过拟合解决方法https://zhuanlan.zhihu.com/p/89590793
过拟合及常见处理办法整理https://blog.csdn.net/jingbo18/article/details/80609006
16、免费gpu
以下遇到的问题都是我个人的问题
- 阿里云:需要认证
- google colab:网页打不开
- 百度云:上传自己的数据集需要登陆,而登陆网页打不开
- FloydHub:对于新用户,有免费的20个小时/月的GPU训练时间
- kaggle
1493

被折叠的 条评论
为什么被折叠?



