10

Tôi đang cố gắng nắm bắt những gì TimeDistributed wrapper hiện trong Keras.Vai trò của lớp TimeDistributed trong Keras là gì?

Tôi nhận được rằng TimeDistributed "áp dụng một lớp cho mỗi lát thời gian của một đầu vào."

Nhưng tôi đã làm một số thử nghiệm và nhận được kết quả mà tôi không thể hiểu được.

Tóm lại, khi kết nối với lớp LSTM, lớp Thời gian phân phối và chỉ dày đặc có cùng kết quả.

model = Sequential() 
model.add(LSTM(5, input_shape = (10, 20), return_sequences = True)) 
model.add(TimeDistributed(Dense(1))) 
print(model.output_shape) 

model = Sequential() 
model.add(LSTM(5, input_shape = (10, 20), return_sequences = True)) 
model.add((Dense(1))) 
print(model.output_shape) 

Đối với cả hai mô hình, tôi có hình dạng đầu ra của (None, 10, 1).

Có ai có thể giải thích sự khác biệt giữa lớp TimeDistributed và Dense sau một lớp RNN không?

+0

Hiện tại không có sự khác biệt, [ở đây] (https://github.com/fchollet/keras/issues/278) một cuộc thảo luận về nó. Tôi nghĩ ý định ban đầu là tạo ra sự phân biệt giữa lớp 'Dense' làm phẳng đầu vào và sau đó định hình lại, do đó kết nối các bước thời gian khác nhau và có nhiều tham số hơn, và 'TimeDistributed' giữ các bước thời gian tách biệt (do đó có ít tham số hơn). Trong trường hợp của bạn 'Dense' nên đã có 500 paramters,' TimeDistributed' chỉ 50 – gionni

+0

@gionni Không, nó có cùng số tham số (cả 6). Vì vậy, hầu như không có sự khác biệt atm? –

+0

Đúng vậy, đó là số tham số họ có nếu có sự khác biệt. Tại thời điểm này không có – gionni

Trả lời

7

Trong keras - trong khi xây dựng mô hình tuần tự - thường là thứ nguyên thứ hai (sau thứ nguyên mẫu) - có liên quan đến thứ nguyên time. Điều này có nghĩa là nếu ví dụ, dữ liệu của bạn là 5-dim với (sample, time, width, length, channel) bạn có thể áp dụng một lớp chập chẻ sử dụng TimeDistributed (có thể áp dụng cho 4-dim với (sample, width, length, channel)) cùng với một chiều thời gian (áp dụng cùng một lớp cho từng lát thời gian) để có được kết quả 5-d .

Các trường hợp với Dense là trong keras từ phiên bản 2.0 Dense là theo mặc định áp dụng cho chỉ chiều qua (ví dụ như nếu bạn áp dụng Dense(10) nhập với hình dạng (n, m, o, p) bạn sẽ nhận được đầu ra với hình dạng (n, m, o, 10)) như vậy trong trường hợp của bạn DenseTimeDistributed(Dense) tương đương.

+1

Nếu bạn không nhớ tôi sẽ đánh giá cao một upvote. –

Các vấn đề liên quan