Vai trò của lớp TimeDistributed trong Keras là gì?


82

Tôi đang cố gắng nắm bắt những gì trình bao bọc TimeDistributed làm trong Keras.

Tôi hiểu rằng TimeDistributed "áp dụng một lớp cho mọi lát cắt tạm thời của đầu vào."

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

Nói tóm lại, liên quan đến lớp LSTM, TimeDistributed và chỉ lớp Dense đều mang lại kết quả như nhau.

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 nhận được hình dạng đầu ra là (Không có, 10, 1) .

Bất 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?


1
Hiện tại không có sự khác biệt, đây là một cuộc thảo luận về nó. Tôi nghĩ mục đích ban đầu là tạo ra sự khác biệt giữa Denselớp 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à TimeDistributedgiữ 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 Densenên đã có 500 paramters, TimeDistributedchỉ có 50
gionni

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

Vâng chính xác, đó là số lượng thông số mà họ sẽ có nếu có sự khác biệt. Hiện nay có không
gionni

Câu trả lời:


82

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

Các trường hợp Denselà trong kerastừ phiên bản 2.0 Denselà theo mặc định áp dụng cho chỉ chiều qua (ví dụ như nếu bạn áp dụng Dense(10)để đầu vào 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)là tương đương.


3
Có một ví dụ về việc sử dụng TimeDistributed bao bọc chính mô hình. Khi điều này được áp dụng cho một Inputtensor, có sự khác biệt nào so với điều này so với việc chỉ thực hiện một mapmô hình được áp dụng cho một danh sách có chứa mỗi lát cắt của Input?
CMCDragonkai
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.