使用 LSTM 进行多变量时间序列预测--问题汇总

刚接触LSTM,参考使用 LSTM 进行多变量时间序列预测这篇文章,写的很好,但是跑起来问题较多,可能是tensorflow的版本问题,跑的时候出现各种问题,今天上午改了一会,总算是跑通了,看这篇博客下面有类似问题的博友也很多,这里记录一下吧,希望有帮助.

我的各个包版本信息

python3.7
keras2.3.1
tensorflow2.2.0

ps:原题主也是使用的tensorflow+keras,虽然tensorflow2.X时候自带keras,但我是重新下的keras!

问题1

grid_search.fit(trainX,trainY)报错,Cannot clone object , as the constructor either does not set or modifies parameter validation_data

这个问题,把grid_model = KerasRegresso r(build_fn=build_model, verbose=1, validation_data=(testX,testY))
这里的validation_data=(testX,testY) 移动到下面的grid_search.fit(trainX,trainY) 里,更改后的代码为:

def build_model(optimizer):
    grid_model = Sequential()
    grid_model.add(LSTM(50,return_sequences=True,input_shape=(30,5)))
    grid_model.add(LSTM(50))
    grid_model.add(Dropout(0.2))
    grid_model.add(Dense(1))

    grid_model.compile(loss = 'mse',optimizer = optimizer)
    return grid_model

grid_model = KerasRegressor(build_fn=build_model,verbose=1)
parameters = {'batch_size' : [16,20],
              'epochs' : [8,10],
              'optimizer' : ['adam','Adadelta'] }

grid_search  = GridSearchCV(estimator = grid_model,
                            param_grid = parameters,
                            cv = 2)
grid_search = grid_search.fit(trainX,trainY,validation_data=(testX,testY))

这里改完之后应该就不会有太大的问题,

问题1.5

这个也不算问题,就是看评论区说程序一直跑,不会停下来,这其实是在循环寻找最优参数,大概十几轮就停了

下面的可能会遇到的问题,(我遇到的额外问题

问题2

Cannot convert a symbolic Tensor (lstm/strided_slice:0) to a numpy array.

这个是numpy版本不对应问题,使用1.19.2版本就行

pip install -U numpy==1.19.2

问题3

TypeError: Descriptors cannot not be created directly
降级protobuf即可

pip install 'protobuf~=3.19.0'

大概到这里就解决的差不多了,有别的问题欢迎留言区讨论.

你可能感兴趣的:(python,机器学习,lstm,深度学习,tensorflow)