深度学习
jingyi130705008
你已经很好了,只是你还可以更好。如有疑问,可加qq 1339087315联系~
展开
-
TextCnn 模型固化后预测时报 The operation, ‘drop_prob‘, does not exist in the graph.“
对于这一问题,由于模型设计中采用tf.layers.dropou函数,而该函数在预测时不起作用,因此固化模型时无需传drop_prob这一参数,因此如果想获取,就会报这个错。原创 2020-08-06 15:47:00 · 739 阅读 · 0 评论 -
BiLSTM + CRF 命名实体识别实践(下)
0. 前言上一篇博客简单讨论了理论知识,这篇博客主要是实践部分,主要针对上一篇博客中提到的代码的优化。优化点主要包含以下几个方面:(1)max_seq_len如何取值?(2)sequence_len不固定会给模型带来多大的提升?(3)batch_size不固定,方便预测(4)词向量的预训练能给模型带来哪些好处?(5)特定业务场景下,如何迁移?...原创 2020-07-21 12:43:57 · 432 阅读 · 0 评论 -
BILSTM+CRF 的命名实体识别(上)
1. CRF介绍参考资料最通俗易懂的BiLSTM-CRF模型中的CRF层介绍条件随机场(CRF)和隐马尔科夫模型(HMM)最大区别在哪里?CRF的全局最优体现在哪里?原创 2020-07-16 15:45:17 · 579 阅读 · 0 评论 -
TensorBoard可视化
1. 运行TensorBoardtensorboard --logdir=/path/log注:默认端口为6006,可通过参数--port=8090来设置。2. 浏览器输入http:host:6006即可访问模型网络结构可查看GRAPHS部分 图 fasttext网络结构监控指标信息可查看SCALAR...原创 2020-07-15 16:10:45 · 199 阅读 · 0 评论 -
BiLSTM + attention 文本分类实践
BiLSTM + attention 以BiLSTM 的输出output_fw+output_bw作为输入,先计算每个词在句子中的贡献,然后以加权的方式对embedding进行融合。计算词对句子的贡献时,以BiLSTM的输出经过一个manual操作,之后进行softmax即可得到,具体可以看代码实现部分。有几个问题,需要思考一下:(1)BiLSTM 的输出output_fw+output_bw如果以concat的方式效果如何?基于tensorflow的实现代码#!/usr/bin/p.原创 2020-07-11 20:33:23 · 3904 阅读 · 3 评论 -
BiLSTM文本分类实践
BiLstm将前向和后向输出拼接起来,然后recuce_mean连个softmax即可实现文本分类(中间也可以过渡个全连接)。基于tensorflow的实现代码#!/usr/bin/python# coding=utf8import osimport numpy as npfrom datetime import datetimeimport tensorflow as tffrom sklearn import metricsfrom nlp_utils import *.原创 2020-07-10 19:09:29 · 3730 阅读 · 7 评论 -
浅谈fasttext、textcnn、dpcnn
最近工作做了个短文本分类,基于fasttext的实现可见这里,基于textcnn的实现可见这里,基于dpcnn的实现可见这里。简单说说自己的一些实验结果:1. fasttext的输入一般是word+n-gram,但是仅仅用unigram即基于字,其表现也不错;2. 对于textcnn、dpcnn也可以尝试用基于word,其表现没有基于字的好;3. 其性能表现fasttext <textcnn <dpcnn, 但是差别并不是很大。各模型均在94.5%+, 差距不到一个百分点。..原创 2020-07-10 15:41:32 · 1452 阅读 · 0 评论 -
tf.layers.dropout 和 tf.nn.dropout的区别
1.tf.nn.dropout函数tf.nn.dropout( x, keep_prob, noise_shape=None, seed=None, name=None)x:指输入,输入tensorkeep_prob: float类型,每个元素被保留下来的概率,设置神经元被选中的概率,在初始化时keep_prob是一个占位符, keep_prob=tf.placeholder(tf.float32)。tensorflow在run时设置keep_...原创 2020-07-10 12:08:50 · 2363 阅读 · 1 评论 -
DpCNN的实践小结
DpCNN 的理论可见:https://www.jiqizhixin.com/articles/2018-06-22-4这里简单说下自己的理解:模型中卷积层的作用是扩大视野范围,池化层的作用是提取有效特征,两者结合就是可以从比较长的句子中提取有效特征。...原创 2020-07-09 20:35:52 · 1309 阅读 · 0 评论 -
TextCNN实践小结
TextCNN模型结构如下图所示:(1)从模型结构中可以看出,多个过滤器提取的特征拼接后接个softmax层即可预测类别,通过实验尝试softmax层之前再接个全连接层进行过滤,其模型效果更好。原创 2020-07-09 16:14:13 · 596 阅读 · 0 评论 -
FastText的实践小结
代码如下:# -*- coding:utf-8 -*-import osimport numpy as npimport tensorflow as tffrom tensorflow.contrib import slimfrom nlp_utils import *class FastText(): def __init__(self, num_classes, seq_length,原创 2020-07-08 21:29:48 · 829 阅读 · 1 评论 -
TensorFlow 加载模型进行预测
1. 保存模型model_path = "./saves/"model_name = "fasttext"saver = tf.train.Saver(max_to_keep=10)saver.save(sess, model_path + model_name, global_step=train_steps)保存模型时会在model_path路径下得到3个名为model_name的文件和一个checkpoint文件,如下所示:.data-00000-of-00001和.index原创 2020-07-08 14:05:36 · 11158 阅读 · 3 评论 -
TextCNN简介与应用
1.基本原理介绍 TextCNN常用来做短文本的分类问题,其基本网络结构如下图所示:从上图不难看出,TextCNN主要包括嵌入层、卷积层、池化层和全联接softmax层:Embedding:这一层是图中最左边的7乘5的句子矩阵,高为句子中单词的个数,宽为词向量的纬度,这个可以类比为图像中的原始像素点。 Convolution:这一层经过 kernel_sizes=(2,3...原创 2020-02-03 20:09:02 · 1451 阅读 · 0 评论 -
卷积神经网络简要笔记
1.过滤器CNN中的过滤器也被称为“kernel”,主要用来提取图片中的某一类特征,如“垂直边缘检测器”可以提取图片中的“垂线”。实际应用中,常常采用多个filter,并且每个filetr是通过训练学习来确定的。2.paddingpadding主要用来填充图片边缘,这样做可以解决两个问题:(1)避免几次卷积操作后,图片变小不能构建深层网络;(2)可以使图片的角落元...原创 2020-01-31 13:10:45 · 278 阅读 · 0 评论 -
激活函数,怎样才能懂你?
1.为什么要用激活函数是为了引入非线性因素,具体请见 神经网络激励函数的作用是什么?有没有形象的解释? - lee philip的回答 - 知乎2.常见激活函数及其优缺点(同学总结的,很不错)激活函数3.激活函数一般具有哪些性质?(具体请参考https://www.zhihu.com/question/59031444/answer/177786603)(1)非线性: 当激活函数是线性的,一个两层...原创 2018-04-07 18:53:43 · 249 阅读 · 0 评论 -
基于神经网络的二分类问题
在之前的文章中,介绍了神经网络的概念和算法思想,甚至给出了公式推导。但依然没有掌握神经网络的精髓,于是打算进一步学习就在网上观看了吴恩达大佬的《神经网络和深度学习》这门课程,觉得收获很大。目前只学习了单个神经元的原理及应用,下面简单总结一下。1. 损失函数的定义 与之前介绍的单个神经元的工作原理不同之处在于损失函数的定义,这里把损失函数定义为: 推导思路:利用...原创 2017-12-06 21:46:44 · 24748 阅读 · 0 评论 -
两层神经网络的设计与实现
这几天看到了浅层网络(仅含有一层隐藏层单元的神经网络)的设计原理及思想,为了加深理解及记忆,下面做个总结。 为了简化原理思想,假设现有隐藏层只有四个隐藏单元的两层神经网络,如下图所示: 和单个神经元工作原理类似,包括前向传播和后向传播两个过程。其中,后向传播多了几个公式推导。因此,这里主要推导后向传播的相关公式。1. 前向传播 假设...原创 2017-12-08 15:12:26 · 12605 阅读 · 0 评论 -
深层神经网络的搭建
在两层神经网络的设计与实现中,介绍了两层神经网络的工作原理。对于搭建多层神经网络,该方法依然适用。因此,本文不再推导公式,而是直接给出代码实现。1. 定义激活函数# 定义激活函数def sigmoid(Z): A = 1 / (1 + np.exp(-Z)) assert(A.shape == Z.shape) cache = Z return A...原创 2017-12-09 23:36:32 · 584 阅读 · 0 评论 -
深层神经网络的权值初始化问题
在上篇文章深层神经网络的搭建中,我们提到关于超参数权值的初始化至关重要。今天我们就来谈谈其重要性以及如何选择恰当的数值来初始化这一参数。1. 权值初始化的意义 一个好的权值初始值,有以下优点:加快梯度下降的收敛速度增加梯度下降到最小训练误差的几率2. 编写代码 为了理解上面提及的意义,下面通过比较来进行进一步地解释。2.1 数据准备import numpy as ...原创 2017-12-12 15:41:56 · 2889 阅读 · 2 评论 -
深层神经网络的正则化问题
1. 什么是正则化 我们知道,在使用神经网络进行分类时,有时会出现“训练集的分类效果很好而测试集的分类效果却不理想”这种现象。这种现象称之为“过拟合”,“正则化”的提出就是为了解决这个问题。那么究竟什么才是“正则化”呢?首先让我们来看下面两个公式: (1)式是我们之前定义的代价函数,(2)式相对于(1)式而言增加了右边一项,增加的那项称之为“L2正则项”。那么“L2正则项...原创 2017-12-12 17:53:56 · 680 阅读 · 0 评论 -
神经网络优化算法之不一样的梯度下降
在上一篇文章中,我们介绍了正则化的作用以及方法,有效的应对“过拟合”问题。今天我们又将提出另一优化算法——Mini-batch。1. 什么是Mini-batch 前面我们提到,为了加快训练速度我们常采用向量化的手段来一次性训练所有的训练集,但是当训练集非常大时,这一过程是缓慢的。因此提出了Mini-batch的概念——将整个训练集划分成若干个小的训练集来依次训练。我们常用...原创 2017-12-13 18:01:57 · 942 阅读 · 0 评论 -
Tensorflow基本语法和实现神经网络
1. 基本语法 一般我们在用tensorflow编程时,会分为以下几个步骤:创建Tensors(变量)编写Tensors间的操作符初始化Tensors创建一个Session运行Session 示例如下:y_hat = tf.constant(36, name='y_hat') # 定义一个常量y_hat,赋值为36y = tf.constant(3...原创 2017-12-15 17:10:50 · 8273 阅读 · 3 评论 -
神经网络为什么要归一化?
关于神经网络归一化问题,在神经网络为什么要归一化和深度学习(二十九)Batch Normalization 学习笔记这两篇文章已经介绍的非常清楚了。 在这里,我简单说下自己的直观理解:由于数据的分布不同,必然会导致每一维的梯度下降不同,使用同一个learning rate 也就很难迭代到代价函数最低点。经过归一化(正则化)处理后,代价函数变得“更圆”,也就很容易进...原创 2017-12-15 17:23:13 · 10765 阅读 · 0 评论 -
结构化机器学习项目小结
花了一天时间把吴大佬的专题三《结构化机器学习项目》这块内容看完了,大概是没有什么项目经验,所以理解的不是特别透彻,现简单总结一下,等以后有经验了再来学习应该会恍然大悟、受益颇多吧!1. 正交化:通过设置独立的参数来进行训练比较,可以有效地找到最佳的模型。2 单一数字评估指标:通常一个模型,我们需要从不同维度来衡量其性能。比如在数据挖掘中的预测模型中,召回率(recall)和准确率...原创 2017-12-19 18:07:08 · 531 阅读 · 0 评论 -
为什么梯度下降是有效的?
在机器学习的很多模型中都用到了梯度下降法或者基于梯度下降的改进算法,那么究竟梯度下降法是如何保证算法的正确性或者说它是有效的呢?接下来,本文将简单分析这个问题。1. 直观认识 以线性回归为例,这里定义了代价函数如下: 我们训练模型的目的就是求得一组解θ0, θ1使得代价函数J最小,其中θ0, θ1与代价函数J的函数图像大致如下图所示: 为了找到...原创 2017-12-20 12:08:07 · 3517 阅读 · 0 评论 -
反向传播算法
在感知器及其训练法则中,我们提到单个感知器仅能表示线性决策面。而本文接下来所要讲得反向传播算法所学习的多层网络能够表示种类繁多的非线性曲面。1. 可微阈值单元 前面介绍过线性单元和感知器单元两种类型的单元来构建单个感知器,但是这两种单元对于构建多层网络不太适用。对于线性单元,虽然前面已经为它推导了效果较佳的梯度下降法则,但是多个这种线性单元的连接仍产生线性...原创 2017-11-30 18:15:05 · 856 阅读 · 0 评论 -
感知器及其训练法则
1. 什么是感知器 感知器以一个实数值向量作为输入,计算这些输入的线性组合,然后如果结果大于某个阈值,就输出1,否则输出-1。更准确地,如果输入为x1到xn,那么感知器计算的输出为: 其中wi为权值,用来决定输入xi对感知器输出的贡献率。为了简化表示,我们假想有一个附加的常量输入x0=1,那么我们就可以写成向量形式:. 这样,感知器可以表示成下图:图1 感知器...原创 2017-11-30 17:41:17 · 8373 阅读 · 3 评论