我正在寻找是否有办法将序列数据作为Numpy数组提供给CTNK中定义的文本LSTM模型。我的数据集中的每个实例都是一个映射回单词的整数序列,每个序列的长度也不同。似乎可以将原始文本数据转换为CTF格式,并通过创建reader
函数将此数据提供给模型,该函数生成小批量,如this示例中所示。但是,我想知道是否有办法将Numpy数组提供给同一个模型。
在这个例子中,有一个feeding sequences with Numpy的讨论,我希望能解决我的问题。然而,该示例处理图像序列而不是可变长度的单词序列。在示例的情况下,我们最终会得到n
元素的张量,每个元素都是3 x 32 x 32
,我们可以设置一个期望这些维度的输入变量。然而,在每个序列具有不同长度的单词序列的情况下,该示例分解。
对于CTNK和Numpy之间关于基于文本的LSTM&RNN的互操作的任何帮助将不胜感激。
答案 0 :(得分:1)
您可能正在寻找:
x = cntk.sequence.input_variable(shape=())
这是一个示例小程序,演示了它如何使用可变序列长度:
import numpy as np
import cntk
# define the model
x = cntk.sequence.input_variable(shape=())
z = cntk.sequence.last(x)
# define the data
a = [[1,2,3], [4,5], [6,7,8,9], [0]]
b = [np.array(i, dtype=np.float32) for i in a]
# evaluate
res = z.eval({x: b})
print(res)