Я строю RNN, используя keras, но когда я хочу изменить временные шаги на другой размер, я получаю сообщение об ошибке и не могу это сделать
вот мой пример для фиктивных данных
from numpy import array
import numpy as np
import pandas as pd
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import LSTM
from keras.layers import Dropout
from sklearn.preprocessing import MinMaxScaler
from keras import optimizers
X=array(
[
[#first sample
[0,2],[1,2],[2,2] # three time steps and 2 features
]
,
[# sample 2
[0,2],[1,2],[2,2] # three time steps and 2 features
]
,
[# sample 3
[7,2], [9,2], [4,2] # three time steps and 2 features
]
,
[# sample 4
[2,2], [5,2], [4,2],[7,9] # four steps and 2 features
]
]
)
Y=np.array([1,2,3,4])
model = Sequential()
model.add(LSTM(8, input_shape=(None, 2),return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(32,return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(128,return_sequences=False))
model.add(Dropout(0.2))
model.add(Dense(58, activation='softmax'))
optimize=optimizers.RMSprop(lr=0.001, rho=0.9, epsilon=None, decay=0.0)
model.compile(optimize,loss='sparse_categorical_crossentropy',metrics=['accuracy'])
model.summary()
model.fit(X,Y,batch_size=1,epochs=50,shuffle=True,verbose=2)
Как видно из кода, у меня есть 4 последовательности и 2 функции в каждой последовательности.
в последней последовательности у меня есть 4 временных шага вместо 3, и вот проблема, если я изменю это на 3 временных шага, код работает правильно,
но я хочу, чтобы он работал на разных временных шагах, как я могу добиться этого без использования отступов или маскирования.
Я читал, что разные темы описывают разные решения, но я не могу заставить его работать в приведенном выше примере.
когда я пытаюсь запустить приведенный выше код, я получаю ошибку
ValueError: Error when checking input: expected lstm_1_input to have 3 dimensions, but got array with shape (4, 1)