Tôi khá mới đối với Mạng nơron và Thư viện Keras và tôi tự hỏi mình có thể sử dụng Lớp Nhúng như được mô tả here để che giấu dữ liệu đầu vào của mình từ một dây dẫn 2D đến một dây dẫn 3D cho một RNN.Cách sử dụng Lớp nhúng cho mạng thần kinh tái phát (RNN) trong Keras
Giả sử chuỗi thời gian của tôi dữ liệu tìm kiếm như sau (với thời gian tăng):
X_train = [
[1.0,2.0,3.0,4.0],
[2.0,5.0,6.0,7.0],
[3.0,8.0,9.0,10.0],
[4.0,11.0,12.0,13.0],
...
] # with a length of 1000
Bây giờ, nói rằng tôi muốn cung cấp cho các RNN 2 vectơ Tính năng cuối cùng để dự đoán các vector đặc trưng cho thời gian t +1.
Hiện tại (không có Lớp nhúng), tôi tạo bản thân 3D theo yêu cầu (nb_samples, timesteps, input_dim) (như trong ví dụ này here).
liên quan đến ví dụ của tôi, 3D tensor thức sau đó sẽ trông như sau:
X_train_2 = [
[[1.0,2.0,3.0,4.0],
[2.0,5.0,6.0,7.0]],
[[2.0,5.0,6.0,7.0],
[3.0,8.0,9.0,10.0]],
[[3.0,8.0,9.0,10.0],
[4.0,11.0,12.0,13.0]],
etc...
]
và Y_train:
Y_train = [
[3.0,8.0,9.0,10.0],
[4.0,11.0,12.0,13.0],
etc...
]
Mô hình của tôi trông như sau (phù hợp với các ví dụ đơn giản ở trên):
num_of_vectors = 2
vect_dimension = 4
model = Sequential()
model.add(SimpleRNN(hidden_neurons, return_sequences=False, input_shape=(num_of_vectors, vect_dimension)))
model.add(Dense(vect_dimension))
model.add(Activation("linear"))
model.compile(loss="mean_squared_error", optimizer="rmsprop")
model.fit(X_train, Y_train, batch_size=50, nb_epoch=10, validation_split=0.15)
Và cuối cùng, câu hỏi của tôi sẽ là, làm cách nào tôi có thể tránh thực hiện những bản sao 2D đó 3D tensor định hình lại bản thân mình và sử dụng lớp Nhúng thay thế? Tôi đoán sau khi mô hình = tuần tự() Tôi sẽ phải thêm một cái gì đó như:
model.add(Embedding(?????))
Có lẽ câu trả lời là khá đơn giản, tôi chỉ đơn giản là nhầm lẫn bởi các tài liệu của lớp nhúng.
có lẽ tôi phải thêm ".0" vào sau tất cả các số của mình. Tôi thực sự không cố gắng thực hiện phân tích phân loại. – Kito