我试图调和我对LSTM的理解,并在克里斯托弗·奥拉在克拉拉斯实施的这篇文章中指出.我正在关注Jason Brownlee为Keras教程撰写的博客.我主要困惑的是,
[samples, time steps, features]和,让我们参考下面粘贴的代码集中讨论上述两个问题:
# reshape into X=t and Y=t+1
look_back = 3
trainX, trainY = create_dataset(train, look_back)
testX, testY = create_dataset(test, look_back)
# reshape input to be [samples, time steps, features]
trainX = numpy.reshape(trainX, (trainX.shape[0], look_back, 1))
testX = numpy.reshape(testX, (testX.shape[0], look_back, 1))
########################
# The IMPORTANT BIT
##########################
# create and fit the LSTM network
batch_size = 1
model = Sequential()
model.add(LSTM(4, …Run Code Online (Sandbox Code Playgroud) 在MNIST LSTM示例中,我不明白"隐藏层"的含义.是否随着时间的推移代表展开的RNN时会形成虚构层?
为什么num_units = 128在大多数情况下?
我知道我应该详细阅读colah的博客来理解这一点,但在此之前,我只是希望得到一些代码来处理我所拥有的时间序列数据.
普通Dense层中的第一个参数也是units,并且是该层中的神经元/节点的数量.然而,标准LSTM单元如下所示:
(这是" 理解LSTM网络 " 的重写版本)
在Keras,当我创建这样的LSTM对象LSTM(units=N, ...)时,我实际上是在创建N这些LSTM单元吗?或者它是LSTM单元内"神经网络"层的大小,即W公式中的?或者是别的什么?
对于上下文,我正在基于此示例代码工作.
以下是文档:https://keras.io/layers/recurrent/
它说:
units:正整数,输出空间的维数.
这让我觉得它是Keras LSTM"图层"对象的输出数量.意味着下一层将有N输入.这是否意味着NLSTM层中实际存在这些LSTM单元,或者可能只运行一个 LSTM单元用于N迭代输出N这些h[t]值,例如,从h[t-N]多达h[t]?
如果只定义了输出的数量,这是否意味着输入尚可,说,只是一个,还是我们必须手动创建滞后输入变量x[t-N]来x[t],一个由定义的每个LSTM单位units=N的说法?
在我写这篇文章的时候,我发现了论证的return_sequences作用.如果设置为True所有N输出都传递到下一层,而如果设置为False它,则只将最后一个h[t]输出传递给下一层.我对吗?
我想开发一种用于二元分类的时间序列方法,在 Keras 中使用有状态的 LSTM
这是我的数据的外观。我得到了很多,比如说N,录音。每个记录包含 22 个长度的时间序列M_i(i=1,...N)。我想在 Keras 中使用有状态模型,但我不知道如何重塑我的数据,尤其是我应该如何定义我的batch_size.
这是我如何进行statelessLSTM。我look_back为所有录音创建了长度序列,以便我拥有大小数据(N*(M_i-look_back), look_back, 22=n_features)
这是我为此目的使用的功能:
def create_dataset(feat,targ, look_back=1):
dataX, dataY = [], []
# print (len(targ)-look_back-1)
for i in range(len(targ)-look_back):
a = feat[i:(i+look_back), :]
dataX.append(a)
dataY.append(targ[i + look_back-1])
return np.array(dataX), np.array(dataY)
Run Code Online (Sandbox Code Playgroud)
其中feat是大小的二维数据数组(n_samples, n_features)(对于每个记录),targ是目标向量。
所以,我的问题是,根据上面解释的数据,如何为有状态模型重塑数据并考虑批处理概念?有什么预防措施吗?
我想要做的是能够将每个录音的每个 time_step 分类为癫痫发作/非癫痫发作。
编辑:我想到的另一个问题是:我的录音包含不同长度的序列。我的有状态模型可以学习每个记录的长期依赖关系,这意味着 batch_size 从一个记录到另一个记录不同......如何处理?在完全不同的序列(test_set)上进行测试时会不会导致泛化问题?
谢谢