Модель глубокого обучения RNN / LSTM? - PullRequest
0 голосов
/ 17 мая 2018

Я пытаюсь построить модель RNN / LSTM для двоичной классификации 0 или 1

образец моего набора данных (номер пациента, время в миль / сек., Нормализация XY и Z, эксцесс, асимметрия, pitch, roll и yaw, label) соответственно.

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 Ответ

0 голосов
/ 17 мая 2018

Слой LSTM принимает трехмерный ввод, соответствующий (batch_size, timesteps, features).В вашем случае у вас есть только двумерный ввод (batch_size, features).

Уровень LSTM адаптирован к форматам последовательностей (предложения, цены на акции ...).Вам необходимо изменить свои данные, чтобы их можно было использовать таким образом.Точнее говоря, вам нужно изменить форму данных, чтобы иметь одну строку на пациента (или вы можете выбрать несколько последовательностей на пациента, но давайте предположим, что нам нужна одна строка на пациента), и каждая строка должна содержать несколько массивов, каждыймассив, соответствующий наблюдению вашего пациента.

...