首页 > 解决方案 > keras 中 lstm 的预处理数据-Numpy,选择每第 n 行会丢失一个维度

问题描述

我有一个数组 y_test,如下所示:

print(y_test)

[[ 21.156  23.155]
 [ 20.64   22.976]
 [ 20.011  22.976]
 ...
 [-16.527  18.002]
 [-16.368  17.548]
 [-16.164  15.959]]

我想每 20 行选择一次,从 9 开始,表示位置 9、29、49 等。

我通过执行以下操作获得正确的值:

y_small = np.copy(y_test[9::20])

print(y_small)

[[-19.921  12.981]
 [ -3.975  19.921]
 [  8.916  18.529]
 ...
 [ 18.684   3.496]
 [ 21.719  18.855]
 [-19.637  20.749]]

但是,如果我将新的 y_small 输入到我一直在使用的 LSTM 模型中,则会收到以下错误:

Error when checking input: expected lstm_input to have 3 dimensions, but got array with shape (1081, 2)

这让我感到困惑,因为初始数组 y_test 被系统很好地采用了。

任何帮助表示赞赏!

编辑:我的问题在于 y_test 的预处理,但Niv 的回答符合我最初的要求。万一有人偶然发现它,我会把这个问题解决!

标签: pythonnumpykeraslstmslice

解决方案


根据错误信息,LSTM 需要 3 个维度的输入。通过添加维度来重塑 y_small NumPy 数组。

您可以像这样重塑以实现所需的尺寸数量:

y_small = np.reshape(y_small, (y_small.shape[0], 1, y_small.shape[1]))

推荐阅读