RNN/LSTM 深度学习模型?

Posted

技术标签:

【中文标题】RNN/LSTM 深度学习模型?【英文标题】:RNN/LSTM deep learning model? 【发布时间】:2018-10-27 02:20:09 【问题描述】:

我正在尝试为二进制分类 0 或 1 构建 RNN/LSTM 模型

我的数据集的一个样本(患者编号、时间(单位为毫米/秒)、XY 和 Z 的归一化、峰度、偏度、俯仰、滚动和偏航、标签)。

1,15,-0.248010047716,0.00378335508419,-0.0152548459993,-86.3738760481,0.872322164158,-3.51314800063,0

1,31,-0.248010047716,0.00378335508419,-0.0152548459993,-86.3738760481,0.872322164158,-3.51314800063,0

1,46,-0.267422664673,0.0051143782875,-0.0191247001961,-85.7662354031,1.0928406847,-4.08015176908,0

1,62,-0.267422664673,0.0051143782875,-0.0191247001961,-85.7662354031,1.0928406847,-4.08015176908,0 

我尝试过的。

import numpy as np
from keras.datasets import imdb
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import LSTM
from keras.layers import Bidirectional
from keras.preprocessing import sequence
# fix random seed for reproducibility
np.random.seed(7)

train = np.loadtxt("featwithsignalsTRAIN.txt", delimiter=",")
test = np.loadtxt("featwithsignalsTEST.txt", delimiter=",")

x_train = train[:,[2,3,4,5,6,7]]
x_test = test[:,[2,3,4,5,6,7]]
y_train = train[:,8]
y_test = test[:,8]

# create the model
model = Sequential()
model.add(LSTM(20, dropout=0.2, input_dim=6))
model.add(Dense(4, activation = 'sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(x_train, y_train, epochs = 2)

但它给了我以下错误

检查输入时出错:预期 lstm_1_input 为 3 维,但得到的数组形状为 (1415684, 6)

【问题讨论】:

【参考方案1】:

LSTM 层采用 3 维输入,对应于 (batch_size, timesteps, features)。在您的情况下,您只有一个二维输入,即 (batch_size, features)。

LSTM 层适用于序列格式(句子、股票价格......)。您需要重塑您的数据,以便以这种方式使用它。更具体地说,您需要重新调整数据以使每位患者有一条线(或者您可以选择为每位患者提供多个序列,但假设我们现在希望每位患者有一条线),并且每条线需要包含多个数组,每个数组对应于您的患者的观察。

【讨论】:

数据集包含例如第一个具有多个标签的患者 如何重塑数据集,它已经包含每个患者的时间序列,每个患者都有多行及其时间

以上是关于RNN/LSTM 深度学习模型?的主要内容,如果未能解决你的问题,请参考以下文章

深度学习RNNLSTMGRU 网络使用教程

深度学习RNNLSTMGRU 网络使用教程

深度学习RNNLSTMGRU 网络使用教程

深度学习RNNLSTMGRU 网络使用教程

深度学习基础

快速串联 RNN / LSTM / Attention / transformer / BERT / GPT