Tôi mới học sâu và LSTM (với máy ảnh). Tôi đang cố gắng để giải quyết một dự đoán chuỗi thời gian nhiều bước trước. Tôi có 3 chuỗi thời gian: A, B và C và tôi muốn dự đoán các giá trị của C. Tôi đang đào tạo LSTM cho ăn 3 bước lùi điểm dữ liệu để dự đoán 3 bước tiếp theo trong tương lai. Dữ liệu đầu vào trông như sau:
X = [[[A0, B0, C0],[A1, B1, C1],[A2, B2, C2]],[[ ...]]]
với kích thước : (1000, 3, 3)
. Đầu ra là:
y = [[C3, C4, C5],[C4, C5, C6],...]
với kích thước : (1000, 3)
.
Tôi đang sử dụng một LSTM đơn giản với 1 lớp ẩn (50 nơ-ron). Tôi thiết lập một LSTM với các máy ảnh là:
n_features = 3
neurons = 50
ahead = 3
model = Sequential()
model.add(LSTM(input_dim=n_features, output_dim=neurons))
model.add(Dropout(.2))
model.add(Dense(input_dim=neurons, output_dim=ahead))
model.add(Activation('linear'))
model.compile(loss='mae', optimizer='adam')
model.fit(X, y, epochs=50)
Mô hình này hoạt động tốt. Bây giờ, tôi cũng muốn dự đoán các giá trị của B (sử dụng cùng một đầu vào). Vì vậy, tôi đã cố gắng định hình lại đầu ra theo cách tương tự như tôi đã làm cho khóa đào tạo có nhiều tính năng:
y = [[[B3, C3],[B4, C4],[B5, C5]],[[ ...]]]
để nó có kích thước : (1000, 3, 2)
. Tuy nhiên, điều này cho tôi một lỗi:
Error when checking target: expected activation_5 to have 2 dimensions,
but got array with shape (1000, 3, 2)
Tôi đoán cấu trúc của mạng cần phải thay đổi. Tôi đã cố gắng sửa đổi model.add(Dense(input_dim=neurons, output_dim=ahead))
nhưng không thành công. Tôi có nên định hình lại y
khác nhau không? Là cấu trúc của mạng sai?