如何使用LSTM对图像进行时间序列预测?

  1. 我有20张不同时间段的图像
  2. 将它们读取为数组后,我有大约100000个像素,其值在20个时间段内已知,我必须使用LSTM预测每个像素的21个时间段值。
  3. 我正在通过使用具有5个时间值作为输入的X_train训练模型,而Y_train需要第6个时间值。

  4. 如果我给X = [500,450,390,350,300]作为输入,我想要的输出就像Y = [260]。

  5. 我有一个形状为(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)

使用KERS

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,return_sequences = True))
regressor.add(Dropout(0.2))

添加第三个LSTM层并进行一些Dropout正则化

regressor.add(LSTM(units = 30,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,30)             0         
_________________________________________________________________
lstm_2 (LSTM)                (None,30)             7320      
_________________________________________________________________
dropout_2 (Dropout)          (None,30)             0         
_________________________________________________________________
lstm_3 (LSTM)                (None,30)             7320      
_________________________________________________________________
dropout_3 (Dropout)          (None,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

hongge6767 回答:如何使用LSTM对图像进行时间序列预测?

将最后一层更改为

regressor.add(Dense(units = 1,activation='linear'))
本文链接:https://www.f2er.com/3145500.html

大家都在问