Как рекуррентная нейронная сеть прогнозирует символы | #20 нейросети на Python

Поделиться
HTML-код
  • Опубликовано: 17 янв 2025

Комментарии • 55

  • @linecodelinecode8261
    @linecodelinecode8261 4 года назад +12

    не думал, что когда нибудь это скажу.....но, Браво!!!! отличное подача материала, хорошее построение нс, а главное понимание того,что делаете....Браво!!!!

  • @СергейЮров-б6е
    @СергейЮров-б6е Год назад +2

    Круто! У меня при первой попытке сеть угадала слово в слово. А потом уже пошло свободное творчество. Но для такой простой сети это правда очень крутой результат! Я удивлен)

  • @igorvozjen9170
    @igorvozjen9170 3 года назад +2

    Да, неожиданно хороший результат, спасибо за видео

  • @alicenNorwood
    @alicenNorwood 3 года назад +2

    утренние мысли в понедельник подняться это твой ятосте !

  • @alexandersavitski2831
    @alexandersavitski2831 3 года назад +1

    Автор зайка, просто лучший курс по нс

  • @maksymburakovml6567
    @maksymburakovml6567 4 года назад +3

    Спасибо большое

  • @dmitrymitrofanov3920
    @dmitrymitrofanov3920 4 года назад +3

    super!!!!!

  • @gdarkestx4708
    @gdarkestx4708 4 года назад +3

    Very nice!

  • @dubinin_s
    @dubinin_s 4 года назад +6

    Спасибо за видео. У Вас в коде inp_chars = 6, а в комментариях Вы говорите по трем символам предсказываем четвертый, я же правильно понимаю, что все же по шести символам предсказываем седьмой?
    И еще вопрос. Я не понял как сеть поняла какой длинной должна быть спрогнозированная фраза?

    • @selfedu_rus
      @selfedu_rus  4 года назад

      Да, совершенно верно, по переменной inp_chars определяем число предыдущих символов, по которым строим прогноз. Далее, сеть рекуррентно (по порядку) прогоняет эти символы через себя и на выходе формирует один прогнозируемый символ, т.е. она формирует только один прогноз. Если хотим построить несколько прогонозов, то опять нужно взять inp_chars предыдущих символов для прогнозирования очередного. И так далее.

  • @Дизельэлектроника
    @Дизельэлектроника 2 года назад +2

    Здравствуйте и большое спасибо за ваши уроки.
    Напишите пожалуйста а как в этом уроке можно увидеть когда наступает переобучение нейронной сети, ведь выборки валидации у нас нет и соответственно val_loss у нас не показывается?
    П.С. Повторил вашу Н.С. по прогнозированию следующего слова, только я сделал больше количество предложений и соответственно увеличилось количество слов, и теперь меня мучает вопрос как проконтролировать что б Н.С. не переобучалась.(Просто 'Validation split= 0.2' добавить?)

  • @boost_456
    @boost_456 Год назад +1

    Подскажите, пожалуйста. Вы в одном уроке разбиваете текст на буквы, в другом - на слова. Но я слышал что наиболее эффективным является разбиение на токены, то есть части слов. Правда ли это и как разбить текст но токены с помощью Tokenizer?

  • @iambusybox
    @iambusybox 7 дней назад +1

    Общая идея раскрыта весьма доступно, но детали с первого просмотра не улавливаются. Надо пересматривать.

  • @Ярослав-е4й9щ
    @Ярослав-е4й9щ Год назад +1

    Здравствуйте, отличный урок! Скажите, пожалуйста, где можно найти файл с обучающей выборкой?

    • @user-mu5cj4hv9l
      @user-mu5cj4hv9l Год назад +1

      Здравствуй, да вроде в начале он сказал, что это обычный текст, может говорил откуда, из книги, стиха и тд. Точнее там были короткие высказывания. Думаю, будет не сложно найти, я пока сейчас не собираюсь делать программу, а чуть попозже. Могу скинуть тебе, напиши как с тобой связаться или просто тут ссылку могу оставить.

    • @Ярослав-е4й9щ
      @Ярослав-е4й9щ Год назад

      @@user-mu5cj4hv9l Доброго времени суток, спасибо большое за ответ! Я уже разобрался, файл находится на сайте(ссылка в описании, где lesson 21) в самом низу

    • @ИванГусаров-ж8ю
      @ИванГусаров-ж8ю 3 месяца назад

      ​@@Ярослав-е4й9щДобрый день, а вы бы не могли скинуть данный сайт. У меня почему то ютуб не разворачивает полностью ссылку, оставляя её обрезанной. Спасибо

  • @osvab000
    @osvab000 2 года назад +2

    Лайк, а в каком формате обучающая выборка. Делаю на colab, выдает ошибку:
    'utf-8' codec can't decode byte 0xc8 in position 0: invalid continuation byte

    • @selfedu_rus
      @selfedu_rus  2 года назад +1

      вроде, я все в utf8 делал, но, как вариант может windows-1251

  • @abenderbey
    @abenderbey 4 года назад +4

    У меня идея! Надо обучить ее на тексте гороскопа и печатать предсказания!

    • @selfedu_rus
      @selfedu_rus  4 года назад +1

      Хорошая идея )) Только лучше здесь использовать анализ текста по словам + генерация выходного текста (также по словам или выбирать заранее заданные варианты).

    • @abenderbey
      @abenderbey 4 года назад +4

      @@selfedu_rus Оказывается уже есть реализации, причем на русском языке, на книгах Пелевина. Поржал от души когда почитал)

    • @lubal304
      @lubal304 4 года назад +2

      @@selfedu_rus Привет. Я изучаю именно RNN, остальные нейросети усвоила по туториалам на других каналах. Ищя видео про RNN, я случайно набрела на твой канал, и хочу выразить тебе огромную благодарность. Ты делаешь великое дело) Но у меня есть вопросик. 11:25 Ты используешь many to one, тогда почему у тебя на выходе RNN слоя 3 нейрона? Должен же быть один.

    • @selfedu_rus
      @selfedu_rus  4 года назад +1

      @@lubal304 Спасибо. На рисунке вычислительный граф представлен - это не три слоя нейронов, а один рекуррентный развернутый во времени :)

    • @darkwingduck3152
      @darkwingduck3152 3 года назад +1

      *Раскрыл бизнес всех астрологов*

  • @densaface
    @densaface 2 года назад +2

    Пробел, я так понимаю, потому не поставлен перед если, потому что перед ним всегда запятая, а она удалена из выборки

    • @Harimaauu
      @Harimaauu 2 года назад

      Запятая удалена, но пробел между словами остаётся, поэтому нет

  • @Sergey-cz7ym
    @Sergey-cz7ym Год назад +1

    для чего мы удаляли первый пустой символ и знаки препинания? с ними тоже все нормально работает. А если добавить количесво нейронов и количество эпох то вообще сказка получается, совсем чуток не хватет что бы можно было поболтать с НС :). только не понятно почему так долго подбирается следующий символ, казалось это должно происходить быстро, но если поставить длинну ответа в 300 символов например то ждать надо довольно долго.

  • @VenatoresnamIgnotis
    @VenatoresnamIgnotis 3 года назад +2

    Отличное видео, здесь понятно, как формируется выходной вектор, размерность входного соответствует выходному . А как задается соответствие если например нам нужно разделить два класса: мужчин и женщин? На вход мы подаем фотографию размера N x N например и соответственно выходов сети у нас будет N x N, а выхода всего два, и как понять что при максимальном значении на первом выходном нейроне будет определяться класс мужчин, а на втором - женщин, а не наоборот? Это вопрос скорее не по этому видео, а в общем. Правильно ли я понимаю, что для этого когда мы формируем обучающую последовательность данных, в качестве ответной реакции на фотографию мужчины мы должны создать вектор [1, 0] если хотим, чтобы реакция на мужчину была на первом нейроне?

    • @iambusybox
      @iambusybox 7 дней назад

      Для классификации фоток лучше подходят свёрточные, о них речь шла ранее в предыдущих видео уроках.

  • @yanavin2964
    @yanavin2964 2 года назад +1

    я начал учить питон чтобы потом перейти на нейронку или ИИ скажите плз будет ли это актуально через 5-10 лет и какие перспективы у всего этого что можно будет делать с помощью этого?

    • @selfedu_rus
      @selfedu_rus  2 года назад

      Думаю через 5-10 лет все еще актуально будет, но это мое личное мнение

  • @phizruk_2730
    @phizruk_2730 Год назад +1

    Был бы гитхаб 👉👈

  • @franzditr6512
    @franzditr6512 4 года назад +4

    ))) научите ее в футбол играть, забавно было бы посмотреть.

    • @selfedu_rus
      @selfedu_rus  4 года назад +3

      Это уже другая технология - обучение с подкреплением )

  • @mielierz
    @mielierz 3 года назад +1

    А что за первый невидимый символ '\ufeff'?

    • @selfedu_rus
      @selfedu_rus  3 года назад +1

      появляется при кодировке UTF-8

    • @mielierz
      @mielierz 3 года назад

      @@selfedu_rus как я могу проверить его наличие?

    • @selfedu_rus
      @selfedu_rus  3 года назад +1

      @@mielierz if str[i] == '\ufeff'

  • @Kopasuy
    @Kopasuy 11 месяцев назад +1

    Хотел сделать токенайзер 256 скалярных значений, он жрет 2 гига оперативы

  • @fewra600
    @fewra600 2 года назад

    У меня почему-то tokenizer букву ё не определяет

    • @selfedu_rus
      @selfedu_rus  2 года назад +1

      да, ее отдельно надо прописать в фильтре

  • @alexdaniel76
    @alexdaniel76 5 месяцев назад +1

    Так работает "Т9" ? 😀

    • @noviebelki
      @noviebelki 5 месяцев назад

      Почти. Он прогнозирует не букву, а слово

  • @mikhalpalych
    @mikhalpalych 3 года назад

    Хочу добавить, что токенайзер раздает индексы символам по частоте их встречаемости в тексте

    • @mikhalpalych
      @mikhalpalych 3 года назад

      А, полную хрень написал, неважно, но короче, значение у каждого ключа(символа, в нашем случае) - это частота появления этого ключа. 6 утра, чета поплыл, просто.
      Прошу прощения, если это имелось ввиду в ролике, мозг с трудом переваривает информацию

    • @mikhalpalych
      @mikhalpalych 3 года назад

      И еще, можете, пожалуйста, объяснить, что происходит в этой строчке:
      X = np.array( [data [i:i + inp_chars, : ] for i in range(n)] )
      Не понимаю синтаксис в квадратных скобках, где срез в конце, то что [i:i+inp_chars, :]

    • @selfedu_rus
      @selfedu_rus  3 года назад

      @@mikhalpalych здесь выделяются One-Hot векторы последних inp_chars символов в диапазоне [i; i+inp_chars)

  • @ПавлоКабай
    @ПавлоКабай 4 года назад +1

    утреннртентелинеи,в ензн внткео ет н вна ео првнеоею ен / вот получ результат при вероятности 90 проц.Где здесь смисл,

    • @DubrovinAlexander
      @DubrovinAlexander 3 года назад

      У меня тоже результат плохой

    • @JugaBugaS23
      @JugaBugaS23 4 месяца назад

      сделай обучающую выборку больше