【发布时间】:2016-07-04 07:33:54
【问题描述】:
我不断收到以下代码中的 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
以上所有都运行顺利。这就是问题所在。
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)
它返回此错误。
Exception: Invalid input shape - Layer expects input ndim=3, was provided with input shape (None, 10320)
当我检查 the website 时,它说要指定一个元组“(例如 (100,) 用于 100 维输入)。”
话虽如此,我的数据集由长度为 10320 的一列组成。我认为这意味着我应该将 (10320,) 作为 input_shape 放入,但我还是得到了错误。有人有解决办法吗?
【问题讨论】:
-
这个运气好吗?
-
不,伙计。这是一场悲剧。因为这个,我不得不去咨询。我坏了。
-
发现这个 - 似乎你必须手动执行 epochs(代码的最后一点):github.com/fchollet/keras/blob/master/examples/stateful_lstm.py
-
如果它有效,那就是黄金。我会尽快测试的
标签: python time-series deep-learning keras lstm