Как стать автором
Обновить

Комментарии 22

простите, а где тут задаётся корпус данных, на котором проводится обучение? Видимо, вот тут:

# Обучающие данные (нужно заполнить данными)
TextData = """
"""

можете для примера привести несколько вариантов заполнения?

TextData="""Привет, я нейросеть, написанная TheScienceVictor200."""

Вы можете использовать любую другую информацию, например статьи, книги и прочее, если есть вычислительные ресурсы.

Так же длина текста должна быть больше 50 символов, иначе будет ошибка.

Что, прямо весь текст книги вставить в кавычки?

Зависит от того, что вам нужно. Но я не рекомендую этого делать, если вы не хотите несколько суток ждать, пока модель обучится. Лучше попробуй сначала обучить её на небольших текстах, длиной более 50, но менее 1000 символов для эксперимента. Если есть вычислительные ресурсы, можете обучать на книгах. Я свою обучал на диалоге меня и ChatGPT.

Эх, как бы этот код на C++ портировать, чтобы подцепить к одному интересному проекту...???

Попробуй запустить код на PyCharm, установив нужные библиотеки. Изменить нужно лишь эту часть кода:

# Генерация текста с использованием модели
while True:
    seed_text = input("Вы: ")
    next_chars = 500
    generated_text = generate_text(seed_text, next_chars, model, max_sequence_len)
    print(generated_text)

Конечно, не изучал C++, но вместо seed_text = input("Вы: ") вы можете использовать ввод текста в окне C++, который будет отправлять текстовый файл Question.txt , как запрос, а после на выходе вместо print(generated_text) будет отправляться текстовый файл Answer.txt с ответом, который будет прочитан кодом на C++

Да у меня имеется JetBrains PyCharm Community Edition 2017.2.1 x64, несколько лет назад изучал работу некоторых программ на Python, однако всё сводилось к банальному разбору кода, в последствии вручную переписывания на С++. Хотя пожалуй попробую использовать онлайн конвертер https://www.codeconvert.ai/python-to-c++-converter

Как здорово, что библиотека TensorFlow имеет C++ API 👍

Теперь можно попробовать портировать.

Неделю назад начал писать что-то похожее на Character Ai. Чем-то похоже на вашу нейронку, но я промпты кодировал в one-hot векторы, которые потом давал на вход сети. Сейчас обучаю, пока до генерации текста не дошло)

Продолжай в том же духе. У тебя всё получится!

Спасибо, надеюсь, у тебя тоже! Приятно видеть таких людей на Хабре

Всё классно, но теперь бы знать что загрузить для обучения(

Можно использовать вообще любой текст

Пример:

TextData="""Привет! Я нейросеть от TheScienceVictor200.
Я могу быть обучен на тексте, длиной более 50 символов!"""

В TextData введите любой текст, длиной более 50 символов

Пример:

TextData = """Привет! Я нейросеть то TheScienceVictor200
Я могу быть обучен вообще на любых текстах, например статьях.""

Но помните! Вам потребуется большие вычислительные ресурсы, если вы хотите обучить её на реально гигантском объёме данных, например на книге.

Здравствуйте! Большое спасибо за Ваш труд. Но я столкнулась с небольшим непонимание. После обучения, там где должен выводиться текст, мне выводятся строчки 1/1 [==============================] - 0s 450ms/step и повтор моего input. Что не так?

Если вы обучили нейросеть очень плохо, например при одной эпохе и малом тексте, она будет сомневаться, что сгенерировать, неопределённые символы не генерируются и на выходе получаем тот же входной текст. Просто обучи её по дольше и на более высокую точность.

Строчки 1/1 [==============================] - 0s 450ms/step просто говорят, что нейросеть сгенерировала символ.

Вы можете бесплатно протестировать нейросеть в Google Collab, где тебе дадут большие мощности по сравнению с твоим компьютером, так как 450ms — это долго.

Спасибо за ответ

Вот пример генерации текста на хороших текстовых данных и точности 0.9:

Вы: Привет

1/1 [==============================] - 0s 18ms/step

...

1/1 [==============================] - 0s 20ms/step

Привет моряки, закончив, закончив, закончив, закончившись воду было этого магачаево в объекта и он переделеке. и в своих гилизать, что вершины созвонился в со родной нас смотрятся темного создать его места.

безверх, на самая или пробивали или виду маряки, потом подземени.

— законы надам, как начал рамирес, — разный рекай, видимое красного какой-то, когда моряки, премиум, залить звукома.

адам местные на для от прекрасного сперелекта сама

маверик морский край

майкала калуга. масская область

лазаводск.

Примеры модернизации кода:

  1. Использование файла вместо строки TextData

Замените

TextData = """Вставьте текст"""

На:

# Чтение текста из файла
file_path = "Путь_к_файлу.txt"
with open(file_path, 'r', encoding='utf-8') as file:
    text_data = file.read()
  1. Сохранение и загрузка модели

Используйте для сохранения

model.save("TextGenerator3000.h5")

Используйте для загрузки модели

model.save("TextGenerator3000.h5")
  1. Изменение параметров модели.

Изменяйте:

  • Количество нейронов

  • Значение точности

  • Кол-во генерируемых символов

  • max_sequencse_len

Если разбираетесь, можете изменять сами слои, например заменить LSTM на GRU или поменять оптимизатор.

model = create_model(total_chars, max_sequence_len)
accuracy = 0
epochs = 0
while accuracy < 0.7:
    model.fit(xs, ys, epochs=1, verbose=1)
    results = model.evaluate(xs, ys, verbose=0)
    loss = results[0]
    accuracy = results[1]
    epochs += 1

loss, accuracy = model.evaluate(xs, ys, verbose=0) выдает ошибку: TypeError: cannot unpack non-iterable float object

Как исправить?

У меня ошибка не возникает, но предполагаю, что как то так:

ошибка может возникать, потому что метод model.evaluate() возвращает только одно значение - потери (loss), а не пару значений (loss, accuracy).

замените:

loss, accuracy = model.evaluate(xs, ys, verbose=0)

на

loss, accuracy = model.evaluate(xs, ys, verbose=0), model.evaluate(xs, ys, verbose=0)

Если не поможет, запусти код в гугл коллаб. Там же, где и я или переустановки или обнови TensorFlow, Keras.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории