【发布时间】:2016-02-25 11:01:49
【问题描述】:
使用教程中给出的 LSTM 的简单构造函数,以及维度为 [,,1] 的输入,人们会期望看到形状为 [, em>,num_units]。 但不管在构造过程中传递了多少个 num_units,输出与输入的形状相同。
以下是复制此问题的最小代码...
import lasagne
import theano
import theano.tensor as T
import numpy as np
num_batches= 20
sequence_length= 100
data_dim= 1
train_data_3= np.random.rand(num_batches,sequence_length,data_dim).astype(theano.config.floatX)
#As in the tutorial
forget_gate = lasagne.layers.Gate(b=lasagne.init.Constant(5.0))
l_lstm = lasagne.layers.LSTMLayer(
(num_batches,sequence_length, data_dim),
num_units=8,
forgetgate=forget_gate
)
lstm_in= T.tensor3(name='x', dtype=theano.config.floatX)
lstm_out = lasagne.layers.get_output(l_lstm, {l_lstm:lstm_in})
f = theano.function([lstm_in], lstm_out)
lstm_output_np= f(train_data_3)
lstm_output_np.shape
#= (20, 100, 1)
不合格的 LSTM(我的意思是在其默认模式下)应该为每个单元生成一个输出,对吗? 代码在 kaixhin 的 cuda lasagne docker 镜像 docker image 上运行 是什么赋予了? 谢谢!
【问题讨论】:
标签: machine-learning lstm lasagne