इससे पता चलता है कि सभी प्रशिक्षण उदाहरणों की एक निश्चित अनुक्रम लंबाई है, अर्थात् timesteps
।
यह काफी सही नहीं है, क्योंकि यह आयाम हो सकता है None
, अर्थात परिवर्तनशील लंबाई। एक एकल बैच के भीतर , आपके पास टाइमस्टेप्स की समान संख्या होनी चाहिए (यह आमतौर पर जहां आप 0-पेडिंग और मास्किंग देखते हैं)। लेकिन बैचों के बीच ऐसा कोई प्रतिबंध नहीं है। अनुमान के दौरान, आपकी कोई भी लंबाई हो सकती है।
उदाहरण कोड जो प्रशिक्षण डेटा के यादृच्छिक समय-लंबाई बैच बनाता है।
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
अज्ञानता के लिए पैडिंग और सेट लेयर का उपयोग करें