小编Sej*_*air的帖子

如何在TensorFlow中处理具有可变长度序列的批次?

我试图使用RNN(特别是LSTM)进行序列预测.但是,我遇到了可变序列长度的问题.例如,

sent_1 = "I am flying to Dubain"
sent_2 = "I was traveling from US to Dubai"
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用基于此Benchmark的简单RNN来预测当前的下一个词,以构建PTB LSTM模型.

但是,num_steps参数(用于展开到先前的隐藏状态)应该在每个Tensorflow的纪元中保持相同.基本上,由于句子的长度不同,因此无法批量处理句子.

 # inputs = [tf.squeeze(input_, [1])
 #           for input_ in tf.split(1, num_steps, inputs)]
 # outputs, states = rnn.rnn(cell, inputs, initial_state=self._initial_state)
Run Code Online (Sandbox Code Playgroud)

在这里,num_steps每个句子都需要改变我的情况.我尝试了几次黑客攻击,但似乎没有任何效果.

python lstm tensorflow recurrent-neural-network

22
推荐指数
3
解决办法
4万
查看次数

在Cython中使用字典,尤其是在nogil中

我有一本字典,

my_dict = {'a':[1,2,3], 'b':[4,5] , 'c':[7,1,2])
Run Code Online (Sandbox Code Playgroud)

我想在Cython nogil函数中使用这个字典.所以,我试图宣布它为

cdef dict cy_dict = my_dict 
Run Code Online (Sandbox Code Playgroud)

到目前为止这个阶段很好.

现在我需要迭代my_dict的键,如果值在列表中,则迭代它.在Python中,它很容易如下:

 for key in my_dict:
      if isinstance(my_dict[key], (list, tuple)):
          ###### Iterate over the value of the list or tuple
          for value in list:
               ## Do some over operation.
Run Code Online (Sandbox Code Playgroud)

但是,在Cython中,我想在nogil中实现相同的功能.因为,在nogil中不允许python对象,我都被困在这里.

with nogil:
    #### same implementation of the same in Cython
Run Code Online (Sandbox Code Playgroud)

有人可以帮帮我吗?

python cython gil

11
推荐指数
1
解决办法
1万
查看次数

使用SVD绘制单词矢量来测量相似度

这是我用来计算直接邻居计数的单词共生矩阵的代码.我在网上找到了以下代码,它使用了SVD.

 import numpy as np
 la = np.linalg
 words = ['I','like','enjoying','deep','learning','NLP','flying','.']
 ### A Co-occurence matrix which counts how many times the word before and after a particular word appears ( ie, like appears after I 2 times)
 arr = np.array([[0,2,1,0,0,0,0,0],[2,0,0,1,0,1,0,0],[1,0,0,0,0,0,1,0],[0,0,0,1,0,0,0,1],[0,1,0,0,0,0,0,1],[0,0,1,0,0,0,0,8],[0,2,1,0,0,0,0,0],[0,0,1,1,1,0,0,0]])
 u, s, v = la.svd(arr, full_matrices=False)
 import matplotlib.pyplot as plt
 for i in xrange(len(words)):
     plt.text(u[i,2], u[i,3], words[i])
Run Code Online (Sandbox Code Playgroud)

在最后一行代码中,U的第一个元素用作x坐标,U的第二个元素用作y坐标以投影单词,以查看相似性.这种方法背后的直觉是什么?为什么他们将每行中的第1和第2个元素(每行代表每个单词)作为x和y来表示单词?请帮忙.

python nlp matplotlib svd

5
推荐指数
1
解决办法
1336
查看次数

在特定迭代或检查点将模型加载/恢复到张量流

我有一个模型,我每10次迭代就会保存一次.所以,我在保存的目录中有以下文件.

checkpoint  model-50.data-00000-of-00001  model-50.index  model-50.meta
model-60.data-00000-of-00001  model-60.index  model-60.meta
Run Code Online (Sandbox Code Playgroud)

等等达到100.我只需加载模型-50.因为我在70次迭代后得到了NaN值.通过deafault,当我恢复保护程序时,将寻找最终的检查点.那么,我怎么能专门加载模型-50.请帮助,否则,我必须从头开始运行模型增益,这很费时间.

python restore tensorflow

4
推荐指数
1
解决办法
3742
查看次数

CountVectorizer矩阵随新的测试数据而变化以进行分类?

我已经使用python创建了一个文本分类模型.我有CountVectorizer,它产生一个2034行和4063列(唯一字)的文档术语矩阵.我保存了用于新测试数据的模型.我的新测试数据

 test_data = ['Love', 'python', 'every','time']
Run Code Online (Sandbox Code Playgroud)

但问题是我将上述测试数据标记转换为特征向量,但形状不同.因为该模型期望4063向量.我知道如何通过使用CountVectorizer的词汇表来解决它,并在测试数据中搜索每个标记并将其放入该索引中.但是有没有简单的方法来处理scikit-learn本身的问题.

python vectorization scikit-learn

2
推荐指数
2
解决办法
3854
查看次数