Как улучшить базовый LLM?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как улучшить базовый LLM?

Сообщение Anonymous »

Я работал над базовым LLM, и каждый раз, когда я запускал код, полученный образец не имел смысла. Я получил вывод:

Однажды на оба ваших дома я возложил на него закон о вас, король короля Англии.

Однажды на оба ваших дома я положил ему закон о вас, короле короля Англии.

Однажды на оба ваших дома я положил ему закон о вас, короле короля Англии.

Однажды на оба ваших дома я возложил на него закон о вас, короле короля Англии.

Однажды на оба ваших дома я возложил на него закон о вас, короле короля Англии.

Однажды на оба ваших дома я положил ему закон. p>

Грамматика совершенно неправильная (без знаков препинания и заглавных букв), и предложение в целом не имеет смысла. Как я могу оптимизировать эту модель?
Это мой код:
import tensorflow as tf
from tensorflow.keras.preprocessing.sequence import pad_sequences
from tensorflow.keras.layers import Embedding, LSTM, Dense, Bidirectional
from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.models import Sequential
import numpy as np

path_to_file = tf.keras.utils.get_file('shakespeare.txt', 'https://storage.googleapis.com/download ... speare.txt')
with open(path_to_file, 'r') as f:
text = f.read()

tokenizer = Tokenizer()
text = text.lower().split("\n")
tokenizer.fit_on_texts(text)
total_words = len(tokenizer.word_index) + 1

input_sequences = []
for line in text:
token_list = tokenizer.texts_to_sequences([line])[0]
for i in range(1, len(token_list)):
n_gram = token_list[:i+1]
input_sequences.append(n_gram)

max_sequence_length = max([len(x) for x in input_sequences])
input_sequences = np.array(pad_sequences(input_sequences, maxlen = max_sequence_length, padding = 'pre'))
x = input_sequences[:, :-1]
y = input_sequences[:, -1]
embedding_dim = 256

y = tf.keras.utils.to_categorical(y, num_classes=total_words)
model = Sequential()
model.add(Embedding(total_words, embedding_dim))
lstm = Bidirectional(LSTM(256))
model.add(lstm)
model.add(tf.keras.layers.Dropout(0.2))
model.add(tf.keras.layers.Dense(total_words, activation = 'softmax'))
lr1 = 0.001
adam = tf.keras.optimizers.Adam(lr1)
model.compile(loss = 'categorical_crossentropy', optimizer = adam, metrics = ['accuracy'])
history = model.fit(x, y, epochs = 40, verbose = 1, batch_size = 128)

seed_text = "Once upon a time"
next_words = 20
for i in range(next_words):
tokens = tokenizer.texts_to_sequences([seed_text])[0]
token_list = pad_sequences([tokens], maxlen = max_sequence_length, padding = 'pre')
predicted = np.argmax(model.predict(token_list, verbose = 0), axis = -1)
output_word = ""
for word, index in tokenizer.word_index.items():
if index == predicted:
output_word = word
break
seed_text = seed_text + " " + output_word

print(seed_text)


Подробнее здесь: https://stackoverflow.com/questions/790 ... -basic-llm
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»