我正在尝试构建一个LSTM模型来分类ATIS数据集。
从未定义大小为N的句子中,我生成上下文窗口字嵌入矩阵。这就是我需要以模型为基础的东西,但我无法弄清楚如何制作它。
当我将输入图层定义为:
时def build_lstm(input_var=None):
l_in = lasagne.layers.InputLayer(shape=(None, 1, None, None), input_var=input_var)
l_hid = l_lstm = lasagne.layers.LSTMLayer(l_in, num_units=300)
l_out = lasagne.layers.DenseLayer(l_hid, num_units=127, nonlinearity=lasagne.nonlinearities.softmax)
return l_out
我明白了:
TypeError: unsupported operand type(s) for *: 'NoneType' and 'NoneType'
如果我在l_in声明中定义输入形状,它可以工作,例如:
l_in = lasagne.layers.InputLayer(shape=(None, 1, 30, 30), input_var=input_var)
重点是每个句子的大小不同,从而产生不同形状的上下文窗口字嵌入矩阵。我该怎么办?
答案 0 :(得分:0)
由于Lasagne / Theano处理Tensors初始化的方式,您不能简单地指定Intent
。正如您已经发现的那样,您需要给出一个尺寸。实际上,正如this example中所见,LSTMLayers似乎期望输入大小为(None, 1, None, None)
。
据我了解,您的选择是:
其他一些相关链接:
https://groups.google.com/forum/#!msg/lasagne-users/9nMD5VJPLXA/sNzqxON_DwAJ https://www.reddit.com/r/MachineLearning/comments/3dqdqr/keras_lstm_limitations/