นี่แสดงให้เห็นว่าตัวอย่างการฝึกอบรมทั้งหมดมีความยาวตามลำดับที่timesteps
แน่นอน
นั่นไม่ถูกต้องนักเนื่องจากขนาดนั้นสามารถเป็นได้None
นั่นคือความยาวผันแปร ภายในชุดเดียวคุณต้องมีจำนวนการประทับเวลาเท่ากัน (ซึ่งโดยทั่วไปจะเป็นที่ที่คุณเห็น 0-padding และ masking) แต่ระหว่างแบตช์ไม่มีข้อ จำกัด ดังกล่าว ในระหว่างการอนุมานคุณสามารถมีความยาวได้
โค้ดตัวอย่างที่สร้างกลุ่มข้อมูลการฝึกอบรมแบบสุ่ม
from keras.models import Sequential
from keras.layers import LSTM, Dense, TimeDistributed
from keras.utils import to_categorical
import numpy as np
model = Sequential()
model.add(LSTM(32, return_sequences=True, input_shape=(None, 5)))
model.add(LSTM(8, return_sequences=True))
model.add(TimeDistributed(Dense(2, activation='sigmoid')))
print(model.summary(90))
model.compile(loss='categorical_crossentropy',
optimizer='adam')
def train_generator():
while True:
sequence_length = np.random.randint(10, 100)
x_train = np.random.random((1000, sequence_length, 5))
# y_train will depend on past 5 timesteps of x
y_train = x_train[:, :, 0]
for i in range(1, 5):
y_train[:, i:] += x_train[:, :-i, i]
y_train = to_categorical(y_train > 2.5)
yield x_train, y_train
model.fit_generator(train_generator(), steps_per_epoch=30, epochs=10, verbose=1)
และนี่คือสิ่งที่มันพิมพ์ หมายเหตุรูปร่างที่ส่งออกจะ(None, None, x)
ระบุขนาดแบทช์ตัวแปรและขนาดการประทับเวลาตัวแปร
__________________________________________________________________________________________
Layer (type) Output Shape Param #
==========================================================================================
lstm_1 (LSTM) (None, None, 32) 4864
__________________________________________________________________________________________
lstm_2 (LSTM) (None, None, 8) 1312
__________________________________________________________________________________________
time_distributed_1 (TimeDistributed) (None, None, 2) 18
==========================================================================================
Total params: 6,194
Trainable params: 6,194
Non-trainable params: 0
__________________________________________________________________________________________
Epoch 1/10
30/30 [==============================] - 6s 201ms/step - loss: 0.6913
Epoch 2/10
30/30 [==============================] - 4s 137ms/step - loss: 0.6738
...
Epoch 9/10
30/30 [==============================] - 4s 136ms/step - loss: 0.1643
Epoch 10/10
30/30 [==============================] - 4s 142ms/step - loss: 0.1441
Masking
เลเยอร์เป็น ignor