Проблема в том, что dataX.append(...)
добавляет в конец списка в одну длинную последовательность.Вам нужно создать двумерный массив данных, для которого один из вариантов - объявить ваши dataX
и dataY
как массивы с нуля для начала и добавить большее количество массивов с фигурами (1, seq_length).См. Реализацию ниже
seq_length = 200
dataX = numpy.empty((0,seq_length))
dataY = numpy.empty((0,1))
for i in range(0, n_chars - seq_length):
seq_in = raw_text[i: i+seq_length]
seq_out = raw_text[i+seq_length]
new x = numpy.array([[char_to_int[char]] for char in seq_in]).reshape(1,-1)
newy = numpy.array([char_to_int[seq_out]]).reshape(1,-1)
dataX = numpy.append(dataX, newx, axis=0)
dataY = numpy.append(dataY, newy, axis=0)
n_patterns = len(dataX)
Однако это зависит от расширения массивов dataX
и dataY
, что является медленным.Более быстрый способ состоит в том, чтобы выделить обе эти памяти заранее:
seq_length = 200
dataX = numpy.zeros((n_chars-seq_length,seq_length))
dataY = numpy.zeros((n_chars-seq_length,1))
for i in range(0, n_chars - seq_length):
seq_in = raw_text[i: i+seq_length]
seq_out = raw_text[i+seq_length]
dataX[i] = [char_to_int[char] for char in seq_in]
dataY[i] = [char_to_int[seq_out]]
n_patterns = len(dataX)
В качестве альтернативы, не являющейся пустой, вы можете просто добавить несколько квадратных скобок к добавляемому элементу, сделав
seq_length = 200
dataX = []
dataY = []
print(numpy.shape(dataX))
for i in range(0, n_chars - seq_length):
seq_in = raw_text[i: i+seq_length]
seq_out = raw_text[i+seq_length]
dataX.append([[char_to_int[char]] for char in seq_in])
dataY.append([char_to_int[seq_out]])
n_patterns = len(dataX)
хотя это будет медленнее, чем в предыдущем методе.