我试图使用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每个句子都需要改变我的情况.我尝试了几次黑客攻击,但似乎没有任何效果.
我有一本字典,
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)
有人可以帮帮我吗?
这是我用来计算直接邻居计数的单词共生矩阵的代码.我在网上找到了以下代码,它使用了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来表示单词?请帮忙.
我有一个模型,我每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创建了一个文本分类模型.我有CountVectorizer,它产生一个2034行和4063列(唯一字)的文档术语矩阵.我保存了用于新测试数据的模型.我的新测试数据
test_data = ['Love', 'python', 'every','time']
Run Code Online (Sandbox Code Playgroud)
但问题是我将上述测试数据标记转换为特征向量,但形状不同.因为该模型期望4063向量.我知道如何通过使用CountVectorizer的词汇表来解决它,并在测试数据中搜索每个标记并将其放入该索引中.但是有没有简单的方法来处理scikit-learn本身的问题.
python ×5
tensorflow ×2
cython ×1
gil ×1
lstm ×1
matplotlib ×1
nlp ×1
restore ×1
scikit-learn ×1
svd ×1