机器学习
文章平均质量分 83
山阴少年
这个作者很懒,什么都没留下…
展开
-
PyTorch入门(七)TensorBoard入门
本文将会介绍PyTorch中的TensorBoard的使用。原创 2023-03-20 12:30:03 · 1268 阅读 · 0 评论 -
PyTorch入门(六)使用Transformer模型进行中文文本分类
本文将会介绍如何在PyTorch中使用Transformer模型进行中文文本分类。原创 2023-03-20 10:38:20 · 6161 阅读 · 6 评论 -
PyTorch入门(五)使用CNN模型进行中文文本分类
本文将会介绍如何在PyTorch中使用CNN模型进行中文文本分类。原创 2023-03-19 22:49:13 · 2575 阅读 · 2 评论 -
PyTorch入门(四)优化器比较
本文将会对PyTorch中的优化器进行比较。原创 2023-03-19 21:45:19 · 665 阅读 · 0 评论 -
PyTorch入门(八)Embedding层
本文将会介绍PyTorch中的Embedding层原创 2023-03-19 19:23:19 · 1278 阅读 · 0 评论 -
模型评估指标micro avg、macro avg和weighted avg的计算方式及区别
在机器学习和深度学习模型评估结果中,我们经常会遇到micro avg、macro avg和weighted avg。本文将会介绍这三种模型评估指标的计算方式以及它们之间的区别。 我们以sklearn.metrics.classification_report的输出结果作为展示,示例模型评估结果如下: maro avg的中文名称为宏平均,其计算方式为每个类型的P、R的算术平均,我们以F1的macro avg为例,上述输出结果中的macro avg F1值的计算方式为:macro avg F1原创 2021-04-12 23:50:13 · 29216 阅读 · 8 评论 -
Keras入门(八)K折交叉验证
在文章Keras入门(一)搭建深度神经网络(DNN)解决多分类问题中,笔者介绍了如何搭建DNN模型来解决IRIS数据集的多分类问题。 本文将在此基础上介绍如何在Keras中实现K折交叉验证。什么是K折交叉验证? K折交叉验证是机器学习中的一个专业术语,它指的是将原始数据随机分成K份,每次选择K-1份作为训练集,剩余的1份作为测试集。交叉验证重复K次,取K次准确率的平均值作为最终模型的评价指标。一般取K=10,即10折交叉验证,如下图所示: 用交叉验证的目的是为了得到可靠稳定的模型。K折交原创 2021-01-24 20:43:19 · 10656 阅读 · 6 评论 -
tensorflow(9)利用tensorflow/serving实现模型的高效使用
我们以文章tensorflow(8)将h5文件转化为pb文件并利用tensorflow/serving实现模型部署中的模型文件为例,介绍如何在tensorflow/serving实现模型的高效使用。 平时我们在使用tensorflow/serving的Docker镜像时,常用的部署命令为:docker run -t --rm -p 8561:8501 -v "$path/example_ner:/models/example_ner" -e MODEL_NAME=example_ner tenso原创 2021-01-16 18:38:10 · 1409 阅读 · 3 评论 -
tensorflow(8)将h5文件转化为pb文件并利用tensorflow/serving实现模型部署
在文章NLP(三十四)使用keras-bert实现序列标注任务中,我们使用Keras和Keras-bert进行模型训练、模型评估和模型预测。我们对人民日报实体数据集进行模型训练,保存后的模型文件为example.h5,h5是Keras保存模型的一种文件格式。 在文章Keras入门(七)使用Flask+Keras-bert构建模型预测服务,我们也介绍了如何使用Flask和example.h5文件来实现模型预测的HTTP服务。 本文将会介绍如何将h5文件转化为pb文件并利用tensorflow/se原创 2021-01-16 17:23:51 · 3009 阅读 · 0 评论 -
Keras入门(七)使用Flask+Keras-bert构建模型预测服务
在文章NLP(三十四)使用keras-bert实现序列标注任务中,我们介绍了如何使用keras-bert模块,利用BERT中文预训练模型来实现序列标注任务的模型训练、模型评估和模型预测。其中,模型预测是通过加载生成的h5文件来实现的。 本文将会介绍如何使用Flask构建模型预测的HTTP服务。 我们遵循正常的思路,即先使用Keras加载保存后的h5模型文件,利用Flask对新输入的文本进行模型预测,最后给出预测结果。我们对人民日报命名实体实体数据集进行模型训练,采用文章NLP(三十四)使用ker原创 2021-01-16 15:43:11 · 1139 阅读 · 2 评论 -
tensorflow(5)将ckpt转化为pb文件并利用tensorflow/serving实现模型部署及预测
本文将会以一个简单的例子,来介绍如何在tensorflow中将ckpt转化为pb文件,并利用tensorflow/serving来实现模型部署及预测。 我们以线性回归模型来作为例子介绍。整个项目的结构如下图:线性回归模型 我们有如下模拟数据(随机产生):import numpy as np# Create data and simulate resultsx_data = np.random.randn(2000, 3)w_real = [0.3, 0.5, 0.1]b_real原创 2020-12-26 14:10:01 · 1317 阅读 · 1 评论 -
tensorflow(3)同时加载多个模型的一次尝试
本文将会介绍如何使用tensorflow来同时加载多个模型,其中生成的模型文件为ckpt格式。 本文以Github上的bertNER项目为模板来介绍。项目结构如下:我们已经生成了三个模型:war,weapon,geo,每个模型都有各自对应的ckpt、config、maps、以及log文件。三个模型的模型参数都一样,最大长度为128。加载一个模型的服务 由于bertNER项目已经为我们提供好了预测脚本predict.py,因此我们很方便地就能将它改成为HTTP服务的方式,代码如下:# -*原创 2020-10-28 20:59:30 · 1473 阅读 · 1 评论 -
CRF++模型预测的两种实现方式
我们在文章NLP(三十三)利用CRF实现中文分词 中已经熟悉了CRF++模型训练和预测的流程。本文将介绍CRF++模型预测的两种实现方式,即使用subprocess模块和crfpy模块。 我们的任务还是实现中文分词,假设我们已经用CRF++训练好了中文分词的模型,模型文件名为model。我们将用这个模型文件来实现CRF++的模型预测。 模型预测的两种实现方式为:使用subprocess模块和crfpy模块。subprocess模块实现方式 subprocess 模块允许我们启动一个新进程,原创 2020-10-21 22:17:17 · 940 阅读 · 0 评论 -
目标检测初体验(二)自制人脸检测功能
之前笔者在学习OpenCV的时候,曾经接触过人脸检测,那时候我们只需要一个函数就能轻松实现人脸检测。关于如何在OpenCV中实现人脸检测功能,可以参考文章:OpenCV神技——人脸检测,猫脸检测 。那时候的感觉是,CV是如此的神奇,而人脸检测正是笔者迈向CV的关键一步。 以前,笔者从没想过能自己实现人脸检测功能,直到不久前接触了目标检测,接触了darknet,脑海中就有了“自制人脸检测”这个想法。如果能够使用darknet来自己实现人脸检测功能,那该是多么酷的一件事情啊! 经过近两天的探索,笔者原创 2020-05-12 21:37:20 · 774 阅读 · 1 评论 -
Keras入门(六)模型训练实时可视化
在北京做某个项目的时候,客户要求能够对数据进行训练、预测,同时能导出模型,还有在页面上显示训练的进度。前面的几个要求都不难实现,但在页面上显示训练进度当时笔者并没有实现。 本文将会分享如何在Keras中将模型训练的过程实时可视化。 幸运的是,已经有人帮我们做好了这件事,这个项目名叫hualos,Github的访问网址为:https://github.com/fchollet/hualo...原创 2020-02-24 20:57:54 · 2807 阅读 · 2 评论 -
NLP(十九)首次使用BERT的可视化指导
本文翻译自文章A Visual Guide to Using BERT for the First Time,作者为Jay Alammar,访问网址为:http://jalammar.github.io/a-visual-guide-to-using-bert-for-the-first-time/ ,可以作为那些不熟悉BERT的读者首次阅读。文章中如有翻译不当之处,还请批评指正。 本文...原创 2020-02-11 18:14:26 · 4392 阅读 · 0 评论 -
Keras入门(五)搭建ResNet对CIFAR-10进行图像分类
本文将会介绍如何利用Keras来搭建著名的ResNet神经网络模型,在CIFAR10数据集进行图像分类。数据集介绍ResNet模型模型训练模型预测总结原创 2020-02-10 14:48:29 · 2316 阅读 · 2 评论 -
Keras入门(四)之利用CNN模型轻松破解网站验证码
项目简介 在之前的文章keras入门(三)搭建CNN模型破解网站验证码中,笔者介绍介绍了如何用Keras来搭建CNN模型来破解网站的验证码,其中验证码含有字母和数字。 让我们一起回顾一下那篇文章的处理思路:利用OpenCV对图像进行单个字符的切割,大概400多张图片;对切割好的单个字符进行人工手动标记;搭建合适的CNN模型,对标记好的数据集进行训练;对于新的验证码,先切割单个字符...原创 2019-03-24 15:33:31 · 1319 阅读 · 0 评论 -
PyTorch入门(一)向量
什么是PyTorch? PyTorch是Facebook人工智能团队开发的一个机器学习和深度学习工具,用于处理大规模图像分析,包括物体检测,分割与分类。但是它的功能不仅限于此。它与其它深度学习框架结合,能够完成复杂的算法。PyTorch用Python和C++编写。 PyTorch属于深度学习框架中的重要一员,与TensorFlow, Keras, Theano等其它深度学习框架不同,它是...原创 2019-02-28 15:02:32 · 3174 阅读 · 0 评论 -
keras入门(三)搭建CNN模型破解网站验证码
项目介绍 在文章CNN大战验证码中,我们利用TensorFlow搭建了简单的CNN模型来破解某个网站的验证码。验证码如下:在本文中,我们将会用Keras来搭建一个稍微复杂的CNN模型来破解以上的验证码。数据集 对于验证码图片的处理过程在本文中将不再具体叙述,有兴趣的读者可以参考文章CNN大战验证码。 在这个项目中,我们现在的样本一共是1668个样本,每个样本都是一个字符图片,字符...原创 2018-11-14 15:20:25 · 1191 阅读 · 0 评论 -
scikit-learn之决策树可视化
平时我们在用机器学习建模时,往往只是用建模去分析数据,得到结论。但有时,我们也需要一些可视化的东西,比如决策树可视化等。 在Python的机器学习库scikit-learn中,tree类中的export_graphviz()函数就能导出树的可视化结果。下面我们将通过一个简单的例子来展示如何将模型建立的决策树可视化。我们使用的数据是位于E盘中log_reg文件夹下的playTennisTr...原创 2018-05-31 15:06:01 · 2509 阅读 · 0 评论 -
TensorFlow.js入门(一)一维向量的学习
TensorFlow的介绍 TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从流图的一端流动到另一端计算过程。TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统。 TensorFlow是一...原创 2018-07-14 17:47:12 · 963 阅读 · 2 评论 -
Sklearn中二分类问题的交叉熵计算
二分类问题的交叉熵自己实现的方法有问题?研究sklearn中的log_loss源代码自己实现二分类问题的交叉熵计算原创 2018-07-26 20:44:34 · 5948 阅读 · 3 评论 -
多分类问题的交叉熵计算
多分类问题的交叉熵 在多分类问题中,损失函数(loss function)为交叉熵(cross entropy)损失函数。对于样本点(x,y)来说,y是真实的标签,在多分类问题中,其取值只可能为标签集合labels. 我们假设有K个标签值,且第i个样本预测为第k个标签值的概率为pi,kpi,kp_{i,k}, 即pi,k=Pr(ti,k=1)pi,k=Pr(ti,k=1)p_{i,k} =...原创 2018-07-27 10:44:18 · 6250 阅读 · 2 评论 -
tensorflow(1)基础入门
TensorFlow Is Coming ( Part 1 )目录TensorFlow简介TensorFlow基本概念Using TensorFlowOptimization & Linear Regression & Logistic Regression 1. TensorFlow简介 TensorFlow由Google的Brain Team创...原创 2018-08-13 09:59:21 · 432 阅读 · 0 评论 -
TensorFlow(3)CNN中的函数
tf.nn.conv2d()函数参数介绍:tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None, name=None)input:输入参数,具有这样的shape[batch, in_height, in_width, in_channels],分别是[batch张图片, 每张图片高度为in_height...原创 2018-08-22 20:26:49 · 385 阅读 · 0 评论 -
TensorFlow(2)Softmax Regression
Softmax RegressionChapterBasicsgenerate random TensorsThree usual activation function in Neural NetworkSoftmax funcionSoftmax RegressionLogistic RegressionSoftmax RegressionExamples...原创 2018-08-20 09:46:57 · 417 阅读 · 0 评论 -
RNN入门(一)识别MNIST数据集
RNN介绍 在读本文之前,读者应该对全连接神经网络(Fully Connected Neural Network, FCNN)和卷积神经网络( Convolutional Neural Network, CNN)有一定的了解。对于FCNN和CNN来说,他们能解决很多实际问题,但是它们都只能单独的取处理一个个的输入,前一个输入和后一个输入是完全没有关系的 。而在现实生活中,我们输入的向量往往存在...原创 2018-09-25 17:50:01 · 1483 阅读 · 0 评论 -
CNN大战验证码
介绍 爬虫江湖,风云再起。自从有了爬虫,也就有了反爬虫;自从有了反爬虫,也就有了反反爬虫。 反爬虫界的一大利器,就是验证码(CAPTCHA),各种各样的验证码让人眼花缭乱,也让很多人在爬虫的过程知难而返,从入门到放弃,当然,这就达到了网站建设者们的目的。但是,但是,所谓的验证码,并不是牢不可破的,在深度学习(Deeping Learning)盛行的今天,很多简单的验证码也许显得不堪一击。...原创 2018-09-25 21:01:46 · 1532 阅读 · 0 评论 -
RNN入门(二)识别验证码
介绍 作为RNN的第二个demo,笔者将会介绍RNN模型在识别验证码方面的应用。 我们的验证码及样本数据集来自于博客: CNN大战验证码,在这篇博客中,我们已经准备好了所需的样本数据集,不需要在辛辛苦苦地再弄一遍,直接调用data.csv就可以进行建模了。RNN模型 用TensorFlow搭建简单RNN模型,因为是多分类问题,所以在最后的输出部分再加一softmax层,损失函数采用对...原创 2018-09-26 11:33:45 · 1972 阅读 · 2 评论 -
Keras入门(一)搭建深度神经网络(DNN)解决多分类问题
Keras介绍 Keras是一个开源的高层神经网络API,由纯Python编写而成,其后端可以基于Tensorflow、Theano、MXNet以及CNTK。Keras 为支持快速实验而生,能够把你的idea迅速转换为结果。Keras适用的Python版本是:Python 2.7-3.6。 Keras,在希腊语中意为“角”(horn),于2015年3月份第一次发行,它可以在Windows,...原创 2018-10-12 11:23:16 · 20523 阅读 · 7 评论 -
h5py快速入门指南
h5py是Python语言用来操作HDF5的模块。下面的文章主要介绍h5py的快速使用入门,翻译自h5py的官方文档:http://docs.h5py.org/en/latest/quick.html 。该翻译仅为个人学习h5py为目的,如有翻译不当之处,请速联系读者或提供其它好的翻译。安装使用Anaconda或者Miniconda:conda install h5py用Enthou...原创 2018-10-13 13:14:42 · 28784 阅读 · 2 评论 -
Keras入门(二)模型的保存、读取及加载
本文将会介绍如何利用Keras来实现模型的保存、读取以及加载。 本文使用的模型为解决IRIS数据集的多分类问题而设计的深度神经网络(DNN)模型,模型的结构示意图如下:具体的模型参数可以参考文章:Keras入门(一)搭建深度神经网络(DNN)解决多分类问题。模型保存 Keras使用HDF5文件系统来保存模型。模型保存的方法很容易,只需要使用save()方法即可。 以Keras...原创 2018-10-13 15:16:30 · 58762 阅读 · 13 评论 -
RNN入门(4)利用LSTM实现整数加法运算
本文将介绍LSTM模型在实现整数加法方面的应用。 我们以0-255之间的整数加法为例,生成的结果在0到510之间。为了能利用深度学习模型模拟整数的加法运算,我们需要将输入的两个加数和输出的结果用二进制表示,这样就能得到向量,如加数在0-255内,可以用8位0-1向量来表示,前面的空位用0填充;结果在0-510内,可以用9位0-1向量来表示,前面的空位用0填充。因为两个加数均在0-255内变...原创 2018-10-28 21:16:40 · 1314 阅读 · 0 评论 -
L1与L2损失函数和正则化的区别
本文翻译自文章:Differences between L1 and L2 as Loss Function and Regularization,如有翻译不当之处,欢迎拍砖,谢谢~ 在机器学习实践中,你也许需要在神秘的L1和L2中做出选择。通常的两个决策为:1) L1范数 vs L2范数 的损失函数; 2) L1正则化 vs L2正则化。作为损失函数 L1范数损失函数,也被称为最小...原创 2018-10-21 10:50:09 · 7767 阅读 · 1 评论 -
RNN入门(三)利用LSTM生成旅游点评
介绍 前几天,某个公众号发文质疑马蜂窝网站,认为它搬运其它网站的旅游点评,对此,马蜂窝网站迅速地做出了回应。相信大多数关注时事的群众已经了解了整个事情的经过,在这里,我们且不论这件事的是是非非,也不关心它是否是通过爬虫等其他技术手段实现的。本文将会展示一种自动生成旅游点评的技术手段。我们用到的模型为LSTM模型。 LSTM模型是深度学习中一种重要的模型,全称为Long Short-Term...原创 2018-10-27 23:04:17 · 581 阅读 · 0 评论 -
矩阵的奇异值分解(SVD)(理论)
矩阵的奇异值分解(Singular Value Decomposition,SVD)是数值计算中的精彩之处,在其它数学领域和机器学习领域得到了广泛的应用,如矩阵的广义逆,主分成分析(PCA),自然语言处理(NLP)中的潜在语义索引(Latent Semantic Indexing),推荐算法等。原创 2017-12-18 09:57:30 · 1266 阅读 · 0 评论