- У меня есть 20 изображений для разных периодов времени
- После чтения их в виде массива у меня есть около 100000 пикселей, значения которых известны за 20 периодов времени, и я должен предсказать значение 21-го периода времени длякаждый пиксель использует LSTM.
Я тренирую свою модель, используя X_train, который имеет 5 значений времени в качестве ввода, а Y_train принимает 6-е значение времени.
Я хочу получить что-то вроде Y = [260], если в качестве входных данных я дал X = [500,450,390,350,300].
У меня есть массив всех изображений, имеющих форму (100769,20)
Мой код выглядит следующим образом, пожалуйста, предложите что-нибудь.
Используемая библиотека
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import LSTM
from keras.layers import Dropout
from keras.backend import clear_session
создание обучающих данных за 5 лет
for c in range(100769):
X=[]
Y=[]
for d in range (15):
x=res_arr[c][d:d+5]
X.append(x)
y=res_arr[c][d+5]
Y.append(y)
Использование Keras
Initialising the RNN
X_train=(1/6300)*(np.array(X))
X_train = np.reshape(X_train, (X_train.shape[0], X_train.shape[1],1))
Y=np.reshape(Y,(15,1))
Y_train=(1/6300)*(Y)
Инициализация RNN
regressor = Sequential()
Добавление первого слоя LSTM и некоторая регуляризация Dropout
regressor.add(LSTM(units = 30, return_sequences = True,activation='relu',input_shape = (X_train.shape[1], 1)))
regressor.add(Dropout(0.2))
Добавление второго слоя LSTMи некоторая регуляризация Dropout
regressor.add(LSTM(units = 30, activation='relu',return_sequences = True))
regressor.add(Dropout(0.2))
Добавление третьего слоя LSTM aи некоторая регуляризация Dropout
regressor.add(LSTM(units = 30,activation='relu', return_sequences = True))
regressor.add(Dropout(0.2))
Добавление четвертого слоя LSTM и некоторая регуляризация Dropout
regressor.add(LSTM(units = 30,activation='relu'))
regressor.add(Dropout(0.2))
Добавление выходного слоя
regressor.add(Dense(units = 1,activation='relu'))
Компиляция RNN
regressor.compile(optimizer = 'Adam', loss = 'mean_squared_error',metrics=['accuracy'])
Установка RNN в Учебный комплект
regressor.fit(X_train, Y_train)
_, accuracy = regressor.evaluate(X_train, Y_train)
#print('Accuracy: %.2f' % (accuracy*100))
acc.append(accuracy*100)
Краткое описание модели
regressor.summary()
Model: "sequential_1"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
lstm_1 (LSTM) (None, 5, 30) 3840
_________________________________________________________________
dropout_1 (Dropout) (None, 5, 30) 0
_________________________________________________________________
lstm_2 (LSTM) (None, 5, 30) 7320
_________________________________________________________________
dropout_2 (Dropout) (None, 5, 30) 0
_________________________________________________________________
lstm_3 (LSTM) (None, 5, 30) 7320
_________________________________________________________________
dropout_3 (Dropout) (None, 5, 30) 0
_________________________________________________________________
lstm_4 (LSTM) (None, 30) 7320
_________________________________________________________________
dropout_4 (Dropout) (None, 30) 0
_________________________________________________________________
dense_1 (Dense) (None, 1) 31
=================================================================
Total params: 25,831
Trainable params: 25,831
Non-trainable params: 0