LSTM _ Могу ли я разделить последовательность, чтобы получить больше последовательностей? - PullRequest
0 голосов
/ 29 мая 2019

У меня есть 14 последовательностей из 72 временных шагов и 11 функций.6 из них классифицируются как «0», а 8 из них как «1».Я хотел бы обучить LSTM, способный классифицировать новую последовательность на «1» или «0».

У меня была идея сделать это: сделать каждый второй шаг, чтобы удвоить количество последовательностей.Я не знаю, является ли это жизнеспособной идеей, но, поскольку у меня большое количество временных шагов, я подумал, что это может сработать.

Проблема в том, что я не знаю, разрешено ли мнесделать это, и последствия для точности LSTM.

Просто знайте, что временной шаг - это одна из функций, а другая - это статистика, которую я вычислил на предыдущем шаге.Вот мой код:

##------------------CONSTANTS----------------------------
timesteps=72 
n_series=14   #number of sequences

##------------------READ DATASET-------------------------
df = pd.read_excel (r'E:\Istem\Deux\Split12.xlsx',nrows=n_series*timesteps) 

X=np.asarray([df.iloc[72*i:72*(i+1),[1,5,6,7,8,9,11,12,13,14,15]].values for i in range(split*n_series)])
Y=[0,1,0,0,0,0,0,1,1,1,1,1,1,1]


#------------------DIVIDE SEQUENCE----------------------
div=2
newX=np.asarray([X[i][j::div] for j in range(div) for i in range(len(X))])
newY=np.repeat(Y,div)

X_train, X_test, y_train, y_test = sk.train_test_split(newX,newY,test_size=0.1)


#------------------CREATE MODEL-------------------------
model = Sequential()
model.add(LSTM(100, input_shape=(int(timesteps/div),11), return_sequences=False))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
print(model.summary())
model.fit(X_train, y_train, epochs=4, batch_size=8, validation_split=0.2, verbose=1)


#------------------EVALUATE MODEL-----------------------
scores = model.evaluate(X_test, y_test, verbose=0)
print("Accuracy: %.2f%%" % (scores[1]*100))

На данный момент моя точность составляет от 50 до 60%.Я пытался изменить размер пакета, количество эпох, размер LSTM, количество делений по временным шагам ... Но это не сильно изменилось.Еще большее беспокойство вызывает то, что точность не лучше, если я оцениваю свою модель на тренировочном наборе, поэтому что-то определенно не так.

Это первый LSTM, который я пытаюсь реализовать, поэтому я был бы очень признателен, еслиВы могли бы помочь мне.

...