相关疑难解决方法(0)

了解Keras LSTM

我试图调和我对LSTM的理解,并在克里斯托弗·奥拉在克拉拉斯实施的这篇文章中指出.我正在关注Jason Brownlee为Keras教程撰写博客.我主要困惑的是,

  1. 将数据系列重塑为[samples, time steps, features]和,
  2. 有状态的LSTM

让我们参考下面粘贴的代码集中讨论上述两个问题:

# 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)

python deep-learning lstm keras

259
推荐指数
4
解决办法
4万
查看次数

tensorflow BasicLSTMCell中的num_units是什么?

在MNIST LSTM示例中,我不明白"隐藏层"的含义.是否随着时间的推移代表展开的RNN时会形成虚构层?

为什么num_units = 128在大多数情况下?

我知道我应该详细阅读colah的博客来理解这一点,但在此之前,我只是希望得到一些代码来处理我所拥有的时间序列数据.

neural-network lstm tensorflow recurrent-neural-network

47
推荐指数
7
解决办法
3万
查看次数

在Keras中,当我使用N`单位'创建有状态的'LSTM`层时,我究竟在配置什么?

普通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]输出传递给下一层.我对吗?

neural-network lstm keras tensorflow

38
推荐指数
4
解决办法
1万
查看次数

如何在 Keras 中为有状态 LSTM 准备数据?

我想开发一种用于二元分类的时间序列方法,在 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)上进行测试时会不会导致泛化问题?

谢谢

python lstm keras

2
推荐指数
1
解决办法
1120
查看次数