深度学习
林子要加油
从事机器学习、NLP相关工作
展开
-
分类的损失函数为什么用交叉熵而不用MSE?
在NLP的应用中,分类算法是最常用的算法,而分类算法最常用的损失函数是交叉熵。为什么我们会用交叉熵作为分类算法的标配呢?在模型的训练过程中,最小化交叉熵意味着模型学到了什么?为什么不用均方误差(MSE)作为分类算法的损失函数呢?如果MSE不好,那其他的损失函数,比如合页损失(Hing Loss)呢?交叉熵最小话到底在学什么?博文中介绍了信息熵、KL散度、交叉熵,从信息论的角度解释了为什么可以用交叉熵来作为分类算法的损失函数。在机器学习中,实际上有三个概率分布:真实数据的分布、训练数据的分布、模型学习到原创 2021-04-10 23:38:03 · 2341 阅读 · 0 评论 -
如何使用pytorch进行多GPU训练
pytorch使用多GPU训练有两种方式:DataParallel和ModelParallel,这里主要介绍DataParallel机制: DataParallel的机制是把每个minibatch分为GPU个数份儿,然后把原始模型复制到多个GPU上,在每个GPU上进行正向传播,在反向传播的时候,把梯度相加(而不是求平均)更新到原始模型上。两种指定GUP id的方式:通过环境变量:os.environ["CUDA_VISIBLE_DEVICES"]="1,2,3,4",好处是只对指定的ids的GPU.原创 2021-03-16 13:12:58 · 4557 阅读 · 1 评论 -
池化层
import torch.nn.functionals as F# 卷积核为1x3, 步长是2的池化层nn.MaxPool1d(3, stride=2)# 卷积核为3x3,步长为2的池化层nn.MaxPool2d(3, stride=2)如果超出边界则跳到下一个batch中。pytorch 中nn.MaxPool1d() 和nn.MaxPool2d()对比...原创 2020-10-23 01:28:26 · 440 阅读 · 0 评论 -
深入理解交叉熵
在分类问题上,包括二分类和多分类,我们使用交叉熵作为损失函数,那什么是交叉熵?为什么选用交叉熵作为分类问题的损失函数?交叉熵又有什么优点和缺点?在pytorch中如何使用交叉熵损失函数的?参考:https://zhuanlan.zhihu.com/p/35709485https://zhuanlan.zhihu.com/p/61944055https://pytorch.org/docs/...原创 2020-05-08 13:13:51 · 269 阅读 · 0 评论 -
多分类metric的macro-averge与micro-average
macro-average是每个类有相同的权重,precision、recall或f1_score,先求和再除以类别的个数。跟样本的个数没有关系。micro-average:每个样本有相同的权重。macro与micro的区别:如果各个类别的样本个数相差不的话,macro-average与micro-average相差不大如果不同类型样本个数不均衡时,比如有一个类型的样本数据特别多,...原创 2020-05-07 23:18:38 · 2016 阅读 · 2 评论 -
使用GPU训练模型遇到的问题
使用GPU训练模型,遇到显存不足的情况:开始报chunk xxx size 64000的错误。使用tensorflow框架来训练的。仔细分析原因有两个:数据集padding依据的是整个训练数据集的max_seq_length,这样在一个批内的数据会造成额外的padding,占用显存;在训练时把整个训练数据先全部加载,造成显存占用多。如果遇到第一种情况,即使使用CPU训练速度也非常慢。...原创 2020-03-30 19:54:22 · 1334 阅读 · 0 评论 -
敏感词检测算法review
字符串匹配是一个技术活,敏感词检测首先有一个敏感词词库,也就是敏感词的列表。第一个想到的方法把敏感词放到一个set里,再待检测的文本分词,到set里去匹配;第二种方法是遍历set,用正则表达式来过滤。以上两种方法,在数据量小的时候没有问题,但是,当数据量非常大的时候,性能就不行了。前缀树算法:https://blog.csdn.net/qq_37410328/article/detail...原创 2020-03-18 11:15:10 · 5130 阅读 · 3 评论 -
HMM用于序列标注
HMM原理初始化矩阵、发射矩阵、状态转移矩阵的训练使用viterbi预测jieba的使用方法保存预训练好的参数,直接使用并预测原创 2020-02-07 00:17:15 · 1538 阅读 · 0 评论 -
详解TF-IDF
IF-IDF概念TF-IDF是NLP中常用的方法,也比较经典。IF-IDF的思想:如果一个词在文档中出现了很多次,但是这个词在其它文档中出现的次数很少,则这个词对这篇文档很重要,在一定程度上可以代表这个文档的关键信息。所以在网页搜索、关键词提取中常用到IF-IDF。TF-IDF就是tf−idf(t,d)=tf(t,d)×idf(t)tf-idf(t,d)=tf(t,d) \times idf(...原创 2020-01-12 01:34:45 · 14208 阅读 · 0 评论 -
Ubantu 查看显卡相关信息
nvidia-smi显示一次当前GPU占用情况nvidia-smi -l 每秒打印一次GPU占用情况并显示watch -n 5 nvidia-smi 每隔5秒刷新打印信息一共有两张表,第一张:第一栏的Fan:N/A是风扇转速,从0到100%之间变动,这个速度是计算机期望的风扇转速,实际情况下如果风扇堵转,可能打不到显示的转速。有的设备不会返回转速,因为它不依赖风扇冷却而是通过其他外...原创 2020-01-17 09:52:16 · 1818 阅读 · 0 评论 -
Deeper learning 2010~2019经典论文集
告别2019:属于深度学习的十年,那些我们必须知道的经典转载于AI遇见机器学习公众号原创 2020-01-01 23:18:33 · 299 阅读 · 0 评论 -
Torchtext深度解析
基于torchtext 0.4.0版本,pytorch版本1.2.0。参考资料:官方文档:https://torchtext.readthedocs.io/en/latest/index.html#例子代码: https://github.com/atnlp/torchtext-summaryhttps://blog.csdn.net/nlpuser/article/details/88...原创 2020-01-01 22:55:08 · 1459 阅读 · 0 评论 -
pytorch中的变长bi-lstm
在Tensorflow 1.12中如果LSTM输入的序列是变长的话,有dynamic_rnn()或bidirection_dynamic_rnn()方法来处理,但是在pytorch中怎么处理呢?在pytorch中也有相对应的方法在torch.nn.utils包中的pack_padded_sequence()和pad_packed_sequence()用来处理变长序列的问题。pack是压缩的意思,...原创 2020-03-20 00:30:18 · 785 阅读 · 0 评论 -
Pytorch(二)基本API及使用
pytorch的API1. torch包初始化Tensor,Tensor的变换,随机初始化一个Tensor, 上下文管理器torch.no_grad(),不进行梯度传播。torch.randn(2,3)随机一个两行三列的tensortorch.zeros(3)随机一个一维的0向量torch.argmax() 获取最大位置torch.matmul()两个矩阵相乘,支持numpy的bro...原创 2020-03-13 22:32:41 · 1059 阅读 · 0 评论 -
tensorflow 1.12使用中的问题
1. 变量如何初始化当从已经持久化的模型文件中restore模型时,出现报错:ValueError: Variable encoder/word_embedding already exists, disallowed. Did you mean to set reuse=True or reuse=tf.AUTO_REUSE in VarScope? Originally defined a...原创 2020-03-13 10:46:47 · 382 阅读 · 0 评论 -
序列标注之Bi-LSTM-CRF
文章目录Bi-LSTM-CRF1. 模型原理1.1 CRF原理2. 模型实现2.1 tensorflow实现2.2 pytorch实现Bi-LSTM-CRF1. 模型原理1.1 CRF原理2. 模型实现2.1 tensorflow实现2.2 pytorch实现...原创 2020-03-05 21:50:54 · 2896 阅读 · 3 评论 -
numpy中的axis
numpy中的axis:axis=0 代表是沿行的方向,无论是sum还是concatenate, 其它axis的维数是不变的axis=1代表是沿列的方向axis=None 代表是flatten之后的array>>> np.sum([0.5, 1.5])2.0>>> np.sum([0.5, 0.7, 0.2, 1.5], dtype=np.in...原创 2020-03-04 14:56:28 · 243 阅读 · 0 评论 -
深入tensorflow1.x
目前所有的算法是基于1.12版本的tensorflow的实现,所以有必要学习一下1.x版本的tensorflow。一、tensorflow 安装基于tensorflow 1.4及以上tensorflow的两个重要的依赖包:protocol buffer:谷歌开发的结构化数据处理工具,例如json,xml等。主要的功能是把结构化的数据序列化进行网络传输或存储,然后把序列化的数据再反序列...原创 2020-02-06 21:21:37 · 2050 阅读 · 0 评论 -
深入研究中文分词利器——Jieba
jieba的分词jieba安装后的位置:可以修改里面的dict.txt文本,或者把自定义的词典直接改到这个目录,当jieba初始化的时候会创建索引。jieba.load_userdict()其实也是把额外的词典放加入的默认的词典里的。使用jieba.load_userdict()的方式: 使用前没有把“区块链分开”,使用后就分开了。还有另一种方法是直接修改默认的词典:但是需...原创 2020-01-06 20:11:52 · 282 阅读 · 0 评论 -
NLP入门整理
入门书籍https://zhuanlan.zhihu.com/p/59184256中提到几个点:了解NLP的最基本的知识《Speech and Language Processing》 Jurafsky和Martin《Introduction to information retrieval》Chris Manning了解NLP早年经典模型及论文,领悟其中的思想了解机器学习...原创 2019-10-29 23:35:47 · 435 阅读 · 0 评论 -
Pytorch(一)为什么是pytorch
各种深度学习框架优缺点常见的深度学习框架Theano2008年开始开发,是第一个有较大影响力的python深度学习框架,但是现在已经停止开发。TensorFlow2015年11月由Google推出的全新的机器学习开源工具。Tensorflow在很大程度上可以看作Theano的后继者,不仅因为有很大一批相同的开发者,也有相近的设计理念。都是基于计算图的实现自动微分系统。Tensor...原创 2019-10-09 23:35:10 · 631 阅读 · 0 评论