Я реализовал функцию генератора, чтобы получить один вектор с горячим кодированием, но генератор фактически выдает ошибки
Я обратился к функции генератора, чтобы получить один вектор с горячим кодированием, потому что последний будет использоваться в качестве входных данных глубокого обучения lstmмодель.Я делаю это, чтобы избежать чрезмерной нагрузки и сбоев памяти при попытке создать одну горячую кодировку для наборов данных очень большого размера.Тем не менее, я не получаю ошибки с функцией генератора.Мне нужна помощь, чтобы выяснить, где я иду не так.
Код до:
X = np.zeros((len(sequences), seq_length, vocab_size), dtype=np.bool)
y = np.zeros((len(sequences), vocab_size), dtype=np.bool)
for i, sentence in enumerate(sequences):
for t, word in enumerate(sentence):
X[i, t, vocab[word]] = 1
y[i, vocab[next_words[i]]] = 1
Здесь
sequences = sentences generated from data set
seq_length = length of each sentence(this is constant)
vocab_size = number of unique words in dictionary
My program when run on the large data set produces,
sequences = 44073315
seq_length = 30
vocab_size = 124958
Итак, когда вышеуказанный код используется напрямуюна последних входах он выдает ошибку Белого.
Traceback (most recent call last):
File "1.py", line 206, in <module>
X = np.zeros((len(sequences), seq_length, vocab_size), dtype=np.bool)
MemoryError
(my_env) [rjagannath1@login ~]$
Итак, я попытался создать функцию генератора (для тестирования), как показано ниже -
def gen(batch_size, no_of_sequences, seq_length, vocab_size):
bs = batch_size
ns = no_of_sequences
X = np.zeros((batch_size, seq_length, vocab_size), dtype=np.bool)
y = np.zeros((batch_size, vocab_size), dtype=np.bool)
while(ns > bs):
for i, sentence in enumerate(sequences):
for t, word in enumerate(sentence):
X[i, t, vocab[word]] = 1
y[i, vocab[next_words[i]]] = 1
print(X.shape())
print(y.shape())
yield(X, y)
ns = ns - bs
for item in gen(1000, 44073315, 30, 124958):
print(item)
Но я получаю следующую ошибку -
File "path_of_file", line 247, in gen
X[i, t, vocab[word]] = 1
IndexError: index 1000 is out of bounds for axis 0 with size 1000
Какую ошибку я делаю в функции генератора?