DNN的滑动窗口方法

时间:2019-06-26 04:44:29

标签: python keras deep-learning window dotnetnuke

我正在尝试实现滑动窗口方法,并在预测部分使用DNN。窗口长度= 24

我做了什么: 我在数据集中有bd.deleteVazamentos(elementos.get(position).getVazID()); (输入)和x(输出)。我将y的值保持不变(单个数组)。并在x值上:

"y"

我收到的错误消息:

def generate_input(data, sequence_length=1):
    x_data = []
    for i in range(len(data)-sequence_length+1):
        a = data[i:(i+sequence_length)]
        x_data.append(a)
    return np.array (x_data)

sequence_length = 24
x_train = generate_input(train, sequence_length)

#Shape of X train: (201389, 24)
#Shape of y train: (201412,)

model = Sequential()
model.add(Dense(30,input_shape= (x_train.shape[1],)))
model.add(Dense(20))
model.add(Dropout(0.2))
model.compile(loss="mse", optimizer='rmsprop')
model.summary()
model.fit(x_train, y_train, batch_size=batch_size, epochs=epochs, 
validation_split=0.1)

另一个问题,如何对多元时间序列使用相同的方法?我想使用序列作为输入来预测Error when checking target: expected dropout_5 to have shape (20,) but got array with shape (1,)

我将切片部分更改为:

y

但是我收到一个错误:

  

无法将尺寸为24的序列复制到尺寸为4的数组轴上

1 个答案:

答案 0 :(得分:0)

model.summary()应该向您显示,模型中的输出层是形状为(None,20)的Dropout层。那可能不是您想要的。似乎您正在尝试预测单个值。因此,您需要在其后添加一个Dense(1)层。将辍学作为输出层也是非常不寻常的。

此外,x_train和y_train的形状应相同[0]。