- 博客(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
15252
原创 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
1067
原创 文本中的特征提取与特征选择
特征提取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
12730
原创 交叉验证
交叉验证的形式K折交叉验证,初始采样分割成K个子样本,一个单独的子样本被保留作为验证模型的数据,其他K-1个样本用来训练。交叉验证重复K次,每个子样本验证一次,平均K次的结果或者使用其它结合方式,最终得到一个单一估测。这个方法的优势在于,同时重复运用随机产生的子样本进行训练和验证,每次的结果验证一次,10折交叉验证是最常用的。Holdout 验证:将原始数据随机分为两组,一组做为训练集,一组做为
2017-03-27 14:53:54
10870
原创 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
6368
原创 tf.train.Saver
Saver类用来保存和恢复变量Saver类增加了保存和恢复变量到checkpoints的操作。它还提供了运行这些操作的便利方法。Checkpoints是专有格式的二进制文件,将变量名称映射到张量值。检查Checkpoints文件内容的最佳方式是使用Saver加载它。Saver可以用计数器自动编号checkpoint文件,这可以让你在训练模型时,在不同的步骤中保留多个checkpoint。例如,你可以
2017-03-24 17:27:51
5511
原创 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
52970
2
翻译 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
2558
原创 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
5208
1
原创 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
35062
2
原创 Encoder-Decoder模型和Attention模型
seq2seq是根据一个输入序列x,来生成另一个输出序列y。seq2seq有很多的应用,例如机器翻译,文档摘取,问答系统以及语音识别等等。在翻译中,输入序列是待翻译的文本,输出序列是翻译后的文本;在问答系统中,输入序列是提出的问题,而输出序列是答案;在语音识别中输入序列是一段语音,输出序列是翻译后的文字。RNN Encoder-Decoder模型为了解决seq2seq问题,Cho等人提出了encod
2017-02-20 15:52:54
5049
翻译 梯度下降算法比较
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
4829
转载 词向量
转自: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
1055
原创 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
26724
6
原创 用神经网络实现命名实体识别
基于普通NN的模型 基本的模型如图所示,主要采用基于窗口的方法。embedding layer: 如图,对于中心词“on”来说,根据窗口大小5分别截取前两个词与后两个词。每一个词都有K个特征,Feature 1是词向量特征,Feature 2-K是自定义特征,比如是否都是小写,首字母是否大写等。通过Lookup Table 查找词特征的向量表示,然后将向量连接起来作为神经网络的输入。NN :
2017-02-16 16:20:00
3394
原创 熵、联合熵、条件熵、交叉熵与相对熵意义
熵: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
12598
1
原创 样本不均衡的常见处理方法
假定样本A类比B类多,且严重不平衡:A类降采样 随机降采样A类分成若干子类,分别与B类进入ML模型基于聚类的A类分割B类过采样 避免降采样造成的信息损失B类数据合成 随机插值得到新样本降低A类权值,提高B类权值
2017-02-14 11:20:55
3339
转载 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
1848
原创 基于tensorflow的cnn文本分类
cnn在计算机视觉领域取得了很好的结果,同时它可以应用在文本分类上面,此文主要介绍如何使用tensorflow实现此任务。cnn实现文本分类的原理下图展示了如何使用cnn进行句子分类。输入是一个句子,为了使其可以进行卷积,首先需要将其转化为向量表示,通常使用word2vec实现。d=5表示每个词转化为5维的向量,矩阵的形状是[sentence_length ×\times 5],即[7 ×\time
2017-02-13 16:00:38
24926
3
原创 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
16734
原创 用tensorflow实现seq2seq模型
训练数据和预处理数据集是电影剧本中的对话,我们首先需要做一些预处理以获得正确的数据格式。切字分词 使用结巴分词。移除低频词 代码中,用vocabulary_size 限制词表的大小。用UNK代替不包括在词表中的单词。例如,单词“非线性”不在词表中,则句子“非线性在神经网络中是重要的”变成“UNK在神经网络中是重要的”。准备开始和结束标签以及填充标签 在decoder端,GO表示解码
2017-02-11 20:37:21
15954
2
原创 论文中常用英语表达
利用: use, exploit, utilize, leverage 我们的模型具有通用性: Our model is general. Our proposed model has an advantage for domain adaptation.
2017-02-11 10:26:32
5537
原创 意图识别与槽填充
Attention-Based Recurrent Neural Network Models for Joint Intent Detection and Slot Filling摘要这篇文章主要介绍了使用Attention-Based RNN模型识别意图和槽填充(slot filling)。意图识别通常使用分类的方法将句子分为相应的意图种类。槽填充则可以看做是序列标注问题,即对于给定的句子中的每
2017-02-10 21:53:30
27824
原创 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
1152
原创 Sequence to Sequence Learning with Neural Networks
这是由谷歌的三位大神用seq2seq模型实现的基于神经网络的机器翻译(英法互译),基本的方法还是encoder-decoder,作为seq2seq的经典必读论文,本文与其他工作相比主要有创新点有:利用了多层的LSTM(本文中是4层)。实验表明使用LSTM对长句子的翻译来说效果很好,主要是因为LSTM本身具有长期依赖的优势。与attention不一样,它又回归到原始模型,在编码端将输入句子编码成一
2017-01-29 17:04:00
7248
原创 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
22141
原创 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
28269
原创 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
5796
1
原创 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
24335
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
12826
原创 基本神经网络
符号 含义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
597
原创 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
5651
原创 机器学习算法中的假设函数与损失函数以及梯度
线性回归:假设函数 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
6530
原创 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
90750
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
5769
翻译 循环神经网络教程 第四部分 用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
2924
翻译 循环神经网络教程第3部分 BPTT
在本教程的前面部分,我们从头实现了RNN,但没有详细介绍如何通过BPTT算法计算梯度。在本部分中,我们将简要概述BPTT并解释它与传统反向传播的区别。然后我们将尝试理解消失梯度问题,这导致了LSTM和GRU的发展,这两个是目前应用于NLP(和其他领域)最流行的模型。消失梯度问题最初是由Sepp Hochreiter于1991年发现的,最近由于深度架构的应用的增加而受到关注。 要完全理解这一部分,我
2016-12-31 12:23:06
1911
翻译 循环神经网络教程-第二部分 用python numpy theano实现RNN
这是Github的代码地址在这一部分我们将会用Python从头实现一个完整的RNN,并使用Theano(一个在GPU上执行操作的库)优化我们的实现。 Github上提供了完整的代码。我将跳过一些对于理解循环神经网络不是必要的样板代码,但所有这些代码也都在Github上。语言模型我们的目标是用RNN建立一个语言模型,也就是说现在有一个有m个词的句子,语言模型允许我们预测观察句子(在给定数据集中)的概率
2016-12-30 15:16:05
6091
翻译 循环神经网络教程-第一部分 RNN介绍
循环神经网络教程-第一部分 RNN介绍循环神经网络(RNNs)是非常流行的模型,它在许多NLP任务上都表现出了巨大的潜力。虽然它很流行,但是详细介绍RNNs以及如何实现RNNs的文章却很少。这篇教程旨在解决上述问题,教程分为4部分: 1. 介绍RNNs(这篇教程) 2. 用Tensorflow实现RNN 3. 理解BPTT后向传播算法以及梯度消失/爆炸问题 4. 实现GRU/RNN 作为教
2016-12-29 15:11:02
5012
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人