为什么我会收到Keras LSTM RNN input_shape错误?

Nic*_*row 13 python time-series deep-learning lstm keras

我不断从以下代码中获取input_shape错误.

from keras.models import Sequential
from keras.layers.core import Dense, Activation, Dropout
from keras.layers.recurrent import LSTM

def _load_data(data):
    """
    data should be pd.DataFrame()
    """
    n_prev = 10
    docX, docY = [], []
    for i in range(len(data)-n_prev):
        docX.append(data.iloc[i:i+n_prev].as_matrix())
        docY.append(data.iloc[i+n_prev].as_matrix())
    if not docX:
        pass
    else:
        alsX = np.array(docX)
        alsY = np.array(docY)
        return alsX, alsY

X, y = _load_data(dframe)
poi = int(len(X) * .8)
X_train = X[:poi]
X_test = X[poi:]
y_train = y[:poi]
y_test = y[poi:]

input_dim = 3
Run Code Online (Sandbox Code Playgroud)

以上所有都顺利进行.这是它出错的地方.

in_out_neurons = 2
hidden_neurons = 300
model = Sequential()
#model.add(Masking(mask_value=0, input_shape=(input_dim,)))
model.add(LSTM(in_out_neurons, hidden_neurons, return_sequences=False, input_shape=(len(full_data),)))
model.add(Dense(hidden_neurons, in_out_neurons))
model.add(Activation("linear"))
model.compile(loss="mean_squared_error", optimizer="rmsprop")
model.fit(X_train, y_train, nb_epoch=10, validation_split=0.05)
Run Code Online (Sandbox Code Playgroud)

它返回此错误.

Exception: Invalid input shape - Layer expects input ndim=3, was provided with input shape (None, 10320)
Run Code Online (Sandbox Code Playgroud)

当我检查网站时,它说要指定一个元组"(例如(100,)用于100维输入)."

话虽这么说,我的数据集由一列长度为10320组成.我认为这意味着我应该(10320,)输入input_shape,但我仍然得到错误.有没有人有办法解决吗?

mxy*_*mxy 0

尝试使用 LSTM 层而不指定输入形状。让 Keras 为您完成这项工作。我认为您也评论了屏蔽,因为您遇到了类似的问题。我以前遇到过这个问题,结果是 input_shape = (time_steps, input_dim)。我认为这是由于 Keras 中新的自动形状推断而发生的。