python-3.x - 如何使用LSTM对图像进行时间序列预测?

标签 python-3.x keras scikit-learn spyder

  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)

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 层和一些 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

最佳答案

将最后一层更改为

regressor.add(Dense(units = 1,activation='linear'))

关于python-3.x - 如何使用LSTM对图像进行时间序列预测?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58747190/

相关文章:

python - 内存映射 ndarray 上的 numpy.std 因 MemoryError 失败

python - 如何激活Python虚拟环境并同时执行脚本?

tensorflow - LSTM 之前或之后的 Dropout 层。有什么区别?

python - keras:model.predict和model.predict_proba有什么区别

python - 分层KFold : shuffle and random_state

python - 网格搜索需要 30 多分钟,有什么方法可以减少这个时间吗? (Jupyter Azure)

python - 如何在 Python3 中获取 "old"zip()?

python - 创建唯一列表 : comparing dict objects

python-3.x - Keras Python 中的分类分类

python - Scikit-learn - 您可以在没有交叉验证的情况下运行 RandomizedSearchCV 吗?