Sự khác biệt giữa một mạng thần kinh LSTM đơn vị LSTM và 3 đơn vị


12

LSTM trong mã Keras sau

input_t = Input((4, 1))
output_t = LSTM(1)(input_t)
model = Model(inputs=input_t, outputs=output_t)
print(model.summary())

có thể được đại diện như

model.predict(np.array([[[1],[2],[3],[4]]]))x1=[1],x2=[2],x3=[3],x4=[4]

Tôi không hiểu làm thế nào mạng thần kinh sau sẽ xử lý cùng một chuỗi đầu vào [1],[2],[3],[4]

 input_t = Input((4, 1))
 output_t = LSTM(3)(input_t)
 model = Model(inputs=input_t, outputs=output_t)
 print(model.summary())

Trong NN này, chúng tôi có ba đơn vị LSTM. Làm thế nào để họ xử lý trình tự [1],[2],[3],[4]? Họ có liên kết với nhau không? Họ có xử lý song song chuỗi đầu vào hay một đơn vị xử lý chuỗi đầu vào và sau đó đầu vào của nó được đưa đến đơn vị LSTM thứ hai, v.v. Ai đó có thể sơ đồ sử dụng hình ảnh này giải thích toàn bộ quá trình?

Câu trả lời:


7

Trong Keras LSTM(n)có nghĩa là "tạo một lớp LSTM bao gồm các đơn vị LSTM. Hình ảnh sau đây cho thấy lớp và đơn vị (hoặc nơ ron) là gì, và hình ảnh ngoài cùng bên phải cho thấy cấu trúc bên trong của một đơn vị LSTM.

nhập mô tả hình ảnh ở đây

Hình ảnh sau đây cho thấy toàn bộ lớp LSTM hoạt động như thế nào.

nhập mô tả hình ảnh ở đây

x1,,xNtxtht1bhththtxN

Bây giờ chúng ta hãy tính toán số lượng tham số cho LSTM(1)LSTM(3)và so sánh nó với những gì Keras chương trình khi chúng ta gọi là model.summary().

inpxtouthtinp+out+1outout×(inp+out+1)

4out(inp+out+1)

Hãy so sánh với những gì đầu ra của Keras.

Ví dụ 1.

 t1 = Input(shape=(1, 1))
 t2 = LSTM(1)(t1)
 model = Model(inputs=t1, outputs=t2)
 print(model.summary())

  Layer (type)                 Output Shape              Param #   
  =================================================================
  input_2 (InputLayer)         (None, 1, 1)              0         
  _________________________________________________________________
  lstm_2 (LSTM)                (None, 1)                 12        
  =================================================================
  Total params: 12
  Trainable params: 12
  Non-trainable params: 0
  _________________________________________________________________

4×1×(1+1+1)=12

Ví dụ 2.

  input_t = Input((4, 2))
  output_t = LSTM(3)(input_t)
  model = Model(inputs=input_t, outputs=output_t)
  print(model.summary())

    _________________________________________________________________
    Layer (type)                 Output Shape              Param #   
    =================================================================
    input_6 (InputLayer)         (None, 4, 2)              0         
    _________________________________________________________________
    lstm_6 (LSTM)                (None, 3)                 72        
    =================================================================
    Total params: 72
    Trainable params: 72
    Non-trainable params: 0

4×3×(2+3+1)=72


1

Tôi thường làm việc với Tensorflow nhưng tôi có thể thấy trong tài liệu này tương tự như Keras.

Về cơ bản, khi bạn đang gọi, LSTM(3)bạn KHÔNG tạo LSTM chồng lên nhau như trên hình ảnh này 1 . Đây là một vấn đề hoàn toàn khác.

Tuy nhiên, khi bạn đang tạo, LSTM(3)bạn đang tạo một LSTM với 3 đơn vị ẩn hoặc các ô ẩn . Trên mã của bạn, 3 sẽ là thứ nguyên của các ô bên trong trong LSTM. Nó có nghĩa là gì? Điều này có nghĩa là chiều của trạng thái ẩn và chiều của trạng thái đầu ra sẽ giống như tham số của các đơn vị ẩn.

Thay vì tưởng tượng một LSTM như một thứ lấy một chuỗi vô hướng và cho và đầu ra vô hướng, hãy tưởng tượng điều này: Bạn có một chuỗi có độ dài T với 512 giá trị mỗi T sao cho [Batchsize, T, 512]. Tại dấu thời gian đầu tiên T = 1, bạn sẽ cung cấp LSTM với 512 giá trị này cùng một lúc và điều này là nhờ các đơn vị ẩn.

Tôi đính kèm cho bạn một số tài liệu tham khảo và liên kết nếu giải thích của tôi không rõ ràng lắm. Q Tham khảo , S Tham khảo .

2 ngăn xếp LSTM

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.