自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 收藏
  • 关注

原创 tf.contrib.learn.preprocessing.VocabularyProcessor

tf.contrib.learn.preprocessing.VocabularyProcessor (max_document_length, min_frequency=0, vocabulary=None, tokenizer_fn=None)参数:max_document_length: 文档的最大长度。如果文本的长度大于最大长度,那么它会被剪切,反之则用0填充。 min_frequenc

2017-04-05 16:37:09 15132

原创 np.random

numpy.random.randintnumpy.random.randint(low, high=None, size=None, dtype='l')>>> np.random.randint(2, size=10)array([1, 0, 0, 0, 1, 1, 0, 0, 1, 0])>>> np.random.randint(1, size=10)array([0, 0, 0, 0

2017-03-27 21:33:55 983

原创 文本中的特征提取与特征选择

特征提取Bag of Words分词计算每个词出现的次数from sklearn.feature_extraction.text import CountVectorizervectorizer = CountVectorizer(min_df=1)corpus = [ 'This is the first document.', 'This is the second

2017-03-27 17:09:44 12511

原创 交叉验证

交叉验证的形式K折交叉验证,初始采样分割成K个子样本,一个单独的子样本被保留作为验证模型的数据,其他K-1个样本用来训练。交叉验证重复K次,每个子样本验证一次,平均K次的结果或者使用其它结合方式,最终得到一个单一估测。这个方法的优势在于,同时重复运用随机产生的子样本进行训练和验证,每次的结果验证一次,10折交叉验证是最常用的。Holdout 验证:将原始数据随机分为两组,一组做为训练集,一组做为

2017-03-27 14:53:54 10758 1

原创 tf.get_variable()

tf.get_variable()通常和tf.variable_scope()一起使用,可用来共享变量tf.get_variable(name, shape, initializer): 通过所给的名字创建或是返回一个变量.tf.variable_scope(): 通过 tf.get_variable()为变量名指定命名空间.函数tf.get_variable() 用来获取或创建一个变量,不同

2017-03-25 22:23:39 6274

原创 tf.train.Saver

Saver类用来保存和恢复变量Saver类增加了保存和恢复变量到checkpoints的操作。它还提供了运行这些操作的便利方法。Checkpoints是专有格式的二进制文件,将变量名称映射到张量值。检查Checkpoints文件内容的最佳方式是使用Saver加载它。Saver可以用计数器自动编号checkpoint文件,这可以让你在训练模型时,在不同的步骤中保留多个checkpoint。例如,你可以

2017-03-24 17:27:51 5457

原创 tf.truncated_normal与tf.random_normal

tf.truncated_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)从截断的正态分布输出随机值。 生成的值服从具有指定平均值和标准偏差的正态分布,如果生成的值大于平均值2个标准偏差的值则丢弃重新选择。在正态分布的曲线中,横轴区间(μ-σ,μ+σ)内的面积为68.268949%。 横轴区间(

2017-03-23 17:30:52 52756 4

翻译 svm损失和交叉熵损失

多分类svm损失损失函数: Li=∑j≠yimax(0,sj−syi+Δ)L_i=∑_{j≠y_i}max(0,s_j−s_{y_i}+Δ) 解释: SVM想要正确分类的分数syis_{y_i}比不正确分类的分数sjs_j至少要高ΔΔ。 举例来说:假设通过分类我们得到一个分数向量,s=[13,−7,11],正确的分类是第一个, Δ Δ 是10,那么损失等于: Li=max(0,−7−13+

2017-02-27 10:55:59 2461

原创 basic_rnn_seq2seq与embedding_attention_seq2seq输入的差别

在用embedding_attention_seq2seq 跑完数据之后,想用basic_rnn_seq2seq再跑一遍进行对比,发现报错了,错误是ValueError: Linear is expecting 2D arguments: [[None], [None, 128]]查了一下basic_rnn_seq2seq的文档,def basic_rnn_seq2seq( encoder_

2017-02-22 16:34:40 5147 2

原创 tf.clip_by_global_norm理解

Gradient Clipping的引入是为了处理gradient explosion或者gradients vanishing的问题。当在一次迭代中权重的更新过于迅猛的话,很容易导致loss divergence。Gradient Clipping的直观作用就是让权重的更新限制在一个合适的范围。具体的细节是 1.在solver中先设置一个clip_gradient 2.在前向传播与反向传播之后

2017-02-21 14:14:44 34700 4

原创 Encoder-Decoder模型和Attention模型

seq2seq是根据一个输入序列x,来生成另一个输出序列y。seq2seq有很多的应用,例如机器翻译,文档摘取,问答系统以及语音识别等等。在翻译中,输入序列是待翻译的文本,输出序列是翻译后的文本;在问答系统中,输入序列是提出的问题,而输出序列是答案;在语音识别中输入序列是一段语音,输出序列是翻译后的文字。RNN Encoder-Decoder模型为了解决seq2seq问题,Cho等人提出了encod

2017-02-20 15:52:54 4983 1

原创 排序

计数排序:用空间换时间,本质上是建立了基于元素的Hash表。

2017-02-18 16:49:59 341

翻译 梯度下降算法比较

Batch gradient descentθ=θ−η⋅∇θJ(θ)θ=θ−η⋅∇_θJ(θ).例如在线性回归中,损失函数是: J(θ)=12∑mi=1(hθ(x(i))−y(i))2J(θ)=\frac {1}{2}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})^2 使用梯度下降的方法使得J(θ)J(\theta)最小化初始化θ\theta,例如令θ1

2017-02-18 11:51:23 4688

转载 词向量

转自:http://licstar.net/archives/328#s22 C&W 的 SENNA  Ronan Collobert 和 Jason Weston 在 2008 年的 ICML 上发表的《A Unified Architecture for Natural Language Processing: Deep Neural Networks with Multitask Lea

2017-02-17 22:14:39 982

原创 tf.nn.conv2d理解

文档解释tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None, data_format=None, name=None)给定一个input的张量[batch, in_height, in_width, in_channels]和一个过滤器 / 内核张量 [filter_height, filter_width, in_

2017-02-17 17:00:26 26601 6

原创 用神经网络实现命名实体识别

基于普通NN的模型 基本的模型如图所示,主要采用基于窗口的方法。embedding layer: 如图,对于中心词“on”来说,根据窗口大小5分别截取前两个词与后两个词。每一个词都有K个特征,Feature 1是词向量特征,Feature 2-K是自定义特征,比如是否都是小写,首字母是否大写等。通过Lookup Table 查找词特征的向量表示,然后将向量连接起来作为神经网络的输入。NN :

2017-02-16 16:20:00 3289

原创 熵、联合熵、条件熵、交叉熵与相对熵意义

熵:H(X)=−∑xp(x)lnp(x)H(X)=-\sum_x p(x)lnp(x) 衡量不确定性的度量联合熵: H(X,Y)=−∑x,yp(x,y)lnp(x,y)H(X,Y)=-\sum_{x,y} p(x,y)lnp(x,y) (X,Y)在一起时的不确定性度量 条件熵: H(X,Y)−H(X)=−∑x,yp(x,y)lnp(y|x)H(X,Y)-H(X)=-\sum_{x,y} p(

2017-02-14 14:46:11 12407 3

原创 样本不均衡的常见处理方法

假定样本A类比B类多,且严重不平衡:A类降采样 随机降采样A类分成若干子类,分别与B类进入ML模型基于聚类的A类分割B类过采样 避免降采样造成的信息损失B类数据合成 随机插值得到新样本降低A类权值,提高B类权值

2017-02-14 11:20:55 3269

转载 End-to-End Reinforcement Learning of Dialogue Agents for Information Access

作者Bhuwan Dhingra, Lihong Li, Xiujun Li, Jianfeng Gao, Yun-Nung Chen, Faisal Ahmed, Li Deng单位School of Computer Science, Carnegie Mellon University, Pittsburgh, PA, USA Microsoft Research, Redmond, WA,

2017-02-14 11:07:32 1784 1

原创 基于tensorflow的cnn文本分类

cnn在计算机视觉领域取得了很好的结果,同时它可以应用在文本分类上面,此文主要介绍如何使用tensorflow实现此任务。cnn实现文本分类的原理下图展示了如何使用cnn进行句子分类。输入是一个句子,为了使其可以进行卷积,首先需要将其转化为向量表示,通常使用word2vec实现。d=5表示每个词转化为5维的向量,矩阵的形状是[sentence_length ×\times 5],即[7 ×\time

2017-02-13 16:00:38 24780 7

原创 tf.nn.embedding_lookup理解

tf.nn.embedding_lookup(params, ids, partition_strategy='mod', name=None, validate_indices=True, max_norm=None)在params中查找与ids对应的表示。 如下代码表示在W中查找self.input_x对应的表示。W = tf.Variable( tf.random_uniform([voca

2017-02-13 14:05:50 16672

原创 用tensorflow实现seq2seq模型

训练数据和预处理数据集是电影剧本中的对话,我们首先需要做一些预处理以获得正确的数据格式。切字分词 使用结巴分词。移除低频词 代码中,用vocabulary_size 限制词表的大小。用UNK代替不包括在词表中的单词。例如,单词“非线性”不在词表中,则句子“非线性在神经网络中是重要的”变成“UNK在神经网络中是重要的”。准备开始和结束标签以及填充标签 在decoder端,GO表示解码

2017-02-11 20:37:21 15784 6

原创 论文中常用英语表达

利用: use, exploit, utilize, leverage 我们的模型具有通用性: Our model is general. Our proposed model has an advantage for domain adaptation.

2017-02-11 10:26:32 5309

原创 意图识别与槽填充

Attention-Based Recurrent Neural Network Models for Joint Intent Detection and Slot Filling摘要这篇文章主要介绍了使用Attention-Based RNN模型识别意图和槽填充(slot filling)。意图识别通常使用分类的方法将句子分为相应的意图种类。槽填充则可以看做是序列标注问题,即对于给定的句子中的每

2017-02-10 21:53:30 27295 2

原创 Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation

摘要:这篇论文首次提出了RNN Encoder–Decoder模型,RNN Encoder将符号序列转换成固定长度矢量表示,RNN Decoder将矢量表示解码为另一序列的符号。模型中的Encoder和Decoder通过联合训练以最大化给定源序列的目标序列的条件概率。经验发现统计机器翻译系统的性能通过使用由RNN Encoder–Decoder计算的短语对的条件概率作为现有对数线性模型中的附加特征来

2017-02-10 21:01:17 1109

原创 Sequence to Sequence Learning with Neural Networks

这是由谷歌的三位大神用seq2seq模型实现的基于神经网络的机器翻译(英法互译),基本的方法还是encoder-decoder,作为seq2seq的经典必读论文,本文与其他工作相比主要有创新点有:利用了多层的LSTM(本文中是4层)。实验表明使用LSTM对长句子的翻译来说效果很好,主要是因为LSTM本身具有长期依赖的优势。与attention不一样,它又回归到原始模型,在编码端将输入句子编码成一

2017-01-29 17:04:00 7130

原创 windows上安装tensorflow

tensorflow0.12版本支持windows,需要python3.5.x。安装python3.5.x下载:python3.5.2 安装: 第一个Install Now是默认安装在c盘的,第二个是自己选择安装路径。 我选择第二个,同时将Add Python 3.5 to PATH勾选上。 这一步可以都勾选上。 这一步的时候我没有勾选最后一项,虽然安装成功了,但是运行的时候报

2017-01-19 15:16:34 22040 2

原创 tf.matmul

矩阵a*b# 2-D tensor `a`a = tf.constant([1, 2, 3, 4, 5, 6], shape=[2, 3]) => [[1. 2. 3.] [4. 5. 6.]]# 2-D tensor `b`b = tf.constant([7, 8, 9, 10, 1

2017-01-18 09:34:41 28199

原创 rnn_cell._linear

源码def _linear(args, output_size, bias, bias_start=0.0, scope=None): """Linear map: sum_i(args[i] * W[i]), where W[i] is a variable. Args: args: a 2D Tensor or a list of 2D, batch x n, Tensors.

2017-01-18 09:30:27 5736 2

原创 tf.concat与numpy.concatenate

t1 = [[1, 2, 3], [4, 5, 6]]t2 = [[7, 8, 9], [10, 11, 12]]tf.concat(0, [t1, t2]) ==> [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]tf.concat(1, [t1, t2]) ==> [[1, 2, 3, 7, 8, 9], [4, 5, 6, 10, 11, 1

2017-01-17 21:37:00 24227 3

原创 tensorflow中的seq2seq文档解读

sequence-to-sequence 模型的种类很多,每一种模型都可以使用不同的RNN单元,但是都必须以 encoder inputs 和decoder inputs作为参数。在tf.nn.seq2seq接口中有各种RNN encoder-decoder sequence-to-sequence模型,最基本的是这个样子:outputs, states = basic_rnn_seq2seq(en

2017-01-11 16:02:59 12757 1

原创 基本神经网络

符号 含义x,训练样本的输入特征,x∈Rn. x , 训练样本的输入特征,x \in \Re^{n}.y输出值/目标值,这里y可以是向量.在autoencoder中,y=x.y 输出值/目标值,这里 y 可以是向量. 在autoencoder中, y=x.(x(i),y(i)),第i个训练样本 (x^{(i)}, y^{(i)}),第 i 个训练样本hW,b(x),输入为x时的假设输出,

2017-01-03 09:59:03 567

原创 python中的o[np.arange(len(y)), y]

交叉熵的代码里面有这样一句代码 o = array([[1,2] [3,4]]) y = array([1,0]) o[np.arange(len(y)), y] = array([2,3]) 就是在o的前len(y)行按照y进行索引,y中的值不能超出o的列数。

2017-01-01 21:24:23 5549

原创 机器学习算法中的假设函数与损失函数以及梯度

线性回归:假设函数 hθ(x)=θTxh_\theta(x)=\theta^Tx损失函数 J(θ)=12∑mi=0(hθ(xi)−yi)2+\lamda∑J(\theta)=\frac{1}{2}\sum_{i=0}^m(h_\theta(x^i)-y^i)^2+\lamda \sum梯度 θj:=\lamda\theta_j:=\lamda

2017-01-01 15:48:05 6477

原创 numpy.argmax()

numpy.argmax(a, axis=None, out=None) 返回沿轴axis最大值的索引。Parameters: a : array_like 数组 axis : int, 可选 默认情况下,索引的是平铺的数组,否则沿指定的轴。 out : array, 可选 如果提供,结果以合适的形状和类型被插入到此数组中。 Returns: index_array : nda

2017-01-01 11:57:28 88809 6

原创 np.zeros()思考

U = np.array([[1,2,3,4],[3,4,5,6]],dtype=np.int32)#第一列的值print U[:,0]#第一行的值print U[0,:]#第一行中的第一个的值print U[0,0:1]O = np.zeros(4)print OD = U.dot(O)#U的shape是(2,4),O的shape是(4,),O与U的列保持一致print D

2017-01-01 11:35:13 5695

翻译 循环神经网络教程 第四部分 用Python 和 Theano实现GRU/LSTM RNN

本教程的github代码在本文中,我们将了解LSTM(长期短期内存)网络和GRU(门控循环单元)。 LSTM是1997年由Sepp Hochreiter和JürgenSchmidhuber首次提出的,是当下最广泛使用的NLP深度学习模型之一。 GRU,首次在2014年使用,是一个更简单的LSTM变体,它们有许多相同的属性。我们先从LSTM开始,后面看到GRU的不同的之处。LSTM 网络在第3部分,我

2016-12-31 17:32:59 2869

翻译 循环神经网络教程第3部分 BPTT

在本教程的前面部分,我们从头实现了RNN,但没有详细介绍如何通过BPTT算法计算梯度。在本部分中,我们将简要概述BPTT并解释它与传统反向传播的区别。然后我们将尝试理解消失梯度问题,这导致了LSTM和GRU的发展,这两个是目前应用于NLP(和其他领域)最流行的模型。消失梯度问题最初是由Sepp Hochreiter于1991年发现的,最近由于深度架构的应用的增加而受到关注。 要完全理解这一部分,我

2016-12-31 12:23:06 1813 1

翻译 循环神经网络教程-第二部分 用python numpy theano实现RNN

这是Github的代码地址在这一部分我们将会用Python从头实现一个完整的RNN,并使用Theano(一个在GPU上执行操作的库)优化我们的实现。 Github上提供了完整的代码。我将跳过一些对于理解循环神经网络不是必要的样板代码,但所有这些代码也都在Github上。语言模型我们的目标是用RNN建立一个语言模型,也就是说现在有一个有m个词的句子,语言模型允许我们预测观察句子(在给定数据集中)的概率

2016-12-30 15:16:05 6011 3

翻译 循环神经网络教程-第一部分 RNN介绍

循环神经网络教程-第一部分 RNN介绍循环神经网络(RNNs)是非常流行的模型,它在许多NLP任务上都表现出了巨大的潜力。虽然它很流行,但是详细介绍RNNs以及如何实现RNNs的文章却很少。这篇教程旨在解决上述问题,教程分为4部分: 1. 介绍RNNs(这篇教程) 2. 用Tensorflow实现RNN 3. 理解BPTT后向传播算法以及梯度消失/爆炸问题 4. 实现GRU/RNN 作为教

2016-12-29 15:11:02 4895

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除