Ладно, поэтому я натренировал LSTM с указанием состояния на https://cs.stanford.edu/people/karpathy/char-rnn/shakespear.txt. Кажется, это не слишком плохо с точки зрения точности, но я знаю, что хочу создать свои собственные произведения Шекспира.
Вопрос в том, как мне на самом деле генерировать из него прогнозы?
В частности, форма пакетного ввода модели (128, 128, 63) и форма вывода (128, 128, 63). (Первое число представляет собой размер пакета, второе число представляет собой длину ввода и вывода прогноза, а третье число представляет собой количество различных символов в тексте.)
Например, я бы хотел:
- Создание различных прогнозов, начиная с пустого текста
- Создание прогнозов, начиная с небольшого начального текста (например, "PYRULEZ:")
Это должно быть возможно, учитывая, как работают LSTM.
Вот фрагмент кода, используемого для генерации и подгонки модели:
model = Sequential()
model.add(LSTM(dataY.shape[2], batch_input_shape=(128, dataX.shape[1], dataX.shape[2]), return_sequences = True, stateful=True, activation = "softmax"))
model.summary()
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics = ['acc'])
model.fit(dataX, dataY, epochs = 1, batch_size = 128, verbose=1, shuffle = False)
Глядя на другие примеры кода, кажется, что мне нужно как-то изменить это, но я не уверен в том, как конкретно.
Я могу включить весь пример кода, если это будет полезно. Он самодостаточен.