Comments 35
На словах сетка пишет как Лев Толстой. А на деле… :D
+11
Хороший текстик. А с наивным алгоритмом "построить ppm-модель и распаковать с её помощью массив случайных чисел" сравнить не хотите? Благо, ppm-based архиваторов в исходниках хватает.
(В сравнении интересно как качество текста, так и скорость работы и требования к памяти)
0
Всегда подозревал что текст к русскому пОпу и рэпу пишет рекуретная нейронная сеть.
+9
Это же Сорокин какой-то получается!
+1
получив на вход текст романа Толстого «Анна Каренина», будет генерировать свой текстБыло бы лучше скармливать самописный текст, который программа будет обрабатывать (как делает Prisma с фотографиями, обрабатывая их и выдавая за произведения искусства) и выдавать за классиков.
0
Между CNN и RNN вообще нет разницы.
0
Прочитав статью, руки зачесались, как захотелось все это увидеть воочию. Отправив весь приведенный код на свой сервер, с нетерпением стал ждать результата. Теперь хочу поделиться ими.
Время обучения около полутора часов, вот с таким значением Training loss.
Вот, что выдает сеть при использовании последнего checkpoint'а:
turegum, спасибо за статью и за разжигание моего интереса к теме машинного обучения!
Время обучения около полутора часов, вот с таким значением Training loss.
Epoch: 20/20... Training Step: 3400... Training loss: 1.3823... 1.5089 sec/batch
Вот, что выдает сеть при использовании последнего checkpoint'а:
$ python3 rnn.py
Гостиная Анны Павловны начала понемногу наполняться. Он постылавший выражение ее с того, что она в других начала стало более.
На кусти свидать все по столу представлялись он сколько весело питили ее в своей деревне.
– Ну, что же мой молодый меня, – сказал он, улыбаясь и отвечая его; – вы видели и после вашего положения с тепорками и оставалось слышали, – отвечал Левин, и потому что вы сделали его воспоминание от самого; но ты знаешь, что я висела не может. Она пишет в наше строение, не спал на свою жизнь и выражение его продоржалось. Он скучно. Но в право в эти дело. Весело при себе своими правительным взглядом и, несмотря на то, что он не понимал, и не могу прежде, – сказал Левин; вы наслужати его приятель и всегда всегда выразить могут, что с собой от него и старались видеть.
– Ну, как же, что, как я просил во меда выходить с нею. Но я про это понимаю, что в тем напроления его возражает своиго собратия на меду кончковыми, и подошел к ней. – Я не вижу в эти презрения, ни одна и провеленный предложений, – сказал он, смотра и ответав их. – Не терее, – сказал Алексей Александрович.
– Ките, что же мог собрать? Ты не понимаюшь своего новое, – и не могут призниться с ним.
– Да вы скажите?
– Непровиди, я не признаю вас, – отвечала Анна и с тем открытом взглянувая на все плять не планово.
Но в криком непременности стола, как оскорбила его, не остановившая ему.
Вот какий подходил к девешу, подошел его взгляда, прежде веселыми слизами и первой руки. Она посмотрела на вспоминать из дореги после него, и она высоколо пристало с протявом веще с тем в стальником веселом дело, и потому, что отвечал его, но оставался слов, новою семейною отказавшеюся перебить его со своею ридовую дело. И в этом словом все была так, в пестренениях отношения и не видит только при всем сердце и в которому она была на круга никогда об исполнении которых она опять со старым представлением от него с какимо-то предстоящим общуго не случалось, что склоните с середом поднимал его.
– На что же мне нужно было на всего последнее, что он сделал, – сказал
turegum, спасибо за статью и за разжигание моего интереса к теме машинного обучения!
+4
Спасибо за отзыв ) Хороший текст получился! Как вариант, можно прибить весь французский из исходного текста, сократив алфавит (т.е. кол-во классов из которых мы выбираем). В теории должно позитивно сказаться на качестве :)
0
Выложите, пожалуйста, исходный код.
0
Кличко финишед!
0
Вот этот фрагмент в функции get_batches неправильный
y[:, :-1], y[:, -1] = x[:, 1:], x[:, 0]
Вы в конец у подставляете первое значение x, а должны подставлять x[i+1, 0] из следующей строки.
y[:, :-1], y[:, -1] = x[:, 1:], x[:, 0]
Вы в конец у подставляете первое значение x, а должны подставлять x[i+1, 0] из следующей строки.
0
Вообще, тексты вполне гениальные, особенно после редактуры:
— Как у тебя дела с тепорками?
— Да так, с протявом. А вот со стальниками веселое дело.
Оба высоколо пристали.
— Как у тебя дела с тепорками?
— Да так, с протявом. А вот со стальниками веселое дело.
Оба высоколо пристали.
+3
А если подобную логику попробовать проганать не на отдельных буквах, а целых словах?
При этом загрузить не одно произведение, а целое собрание соченений, чтобы выборка была больше.
Думаю за счет отсутсвия несуществующих слов, результат может быть куда интересней и реалистичней.
При этом загрузить не одно произведение, а целое собрание соченений, чтобы выборка была больше.
Думаю за счет отсутсвия несуществующих слов, результат может быть куда интересней и реалистичней.
0
в лоб эту задачу не решить, просто заменив символы на слова — размер словаря, то есть количество классов из которых надо делать выбор следующего элемента, будет на много порядков больше (десятки и сотни тысяч вместо наших 140). Я поэтому и написал в заключении, что нужны другие технологии вроде word embeddings
0
Спасибо за интересный пример, я тоже занимаюсь изучением этих алгоритмов. Конечно лишь от одной символьной последовательности я большего и не ожидал, вернее ожидал меньшего.
Процесс обучения Однако оказался весьма интересным и занятным, и прогресс налицо:
Мне сразу вспомнилась сцена создания Шарикова: «Абыр… абырвалг… Примус! Пивная!.. ещё парочку...»
Процесс обучения Однако оказался весьма интересным и занятным, и прогресс налицо:
В какой-то момент сетка даже ругнулась матом :)
Мне сразу вспомнилась сцена создания Шарикова: «Абыр… абырвалг… Примус! Пивная!.. ещё парочку...»
0
По-моему не очень хорошая идея генерировать по буквам, не эффективнее ли обучить на этом тексте word2vec и попытаться создать стилизатор текста? Если будет интересно могу написать хаб.
+1
Да, я об этом и писал в заключении — про embeddings. А напишите свой пример с word2vec, я думаю будет очень много благодарных читателей!
0
Это было ясно еще много лет назад. Модель на основе только многослойной rnn (lstm) не способна к генерации адекватных текстов. К тому же на уровне только символов (без обучения embedding'у или без уже обученного word2vec), пары слоев явно будет недостаточно для создания нужной глубины абстракции и обучения контексту. На сегодняшний день эта модель слишком проста и конечно не может справиться с этой задачей. Но вот модель bidirectional seq2seq encoder-decoder with attention уже способна к генерации адекватных предложений на основе предыдущих. «Галлюцинировать» на такой модели можно намного качественнее. Но и этого тоже будет недостаточно. Чтобы сохранять глобальный контекст модели желательно иметь доступ к памяти и обучиться записи и считыванию. Такая «Нейронная Машина Тьюринга» уже будет иметь возможность нести и изменять «контекст» от предложения к предложению.
Но пока можете попробовать seq2seq, гарантирую совершенно другой уровень качества. Эту модель использует переводчик от google. Модель seq2seq помогла выйти на совершенной иной уровень машинного перевода. А ведь на уровне декодера — это и есть задача генерации текста.
Но пока можете попробовать seq2seq, гарантирую совершенно другой уровень качества. Эту модель использует переводчик от google. Модель seq2seq помогла выйти на совершенной иной уровень машинного перевода. А ведь на уровне декодера — это и есть задача генерации текста.
0
Да, seq2seq это интересная тема, но так уже становится не совсем интересна. Когда же ты пишешь сам хотя бы на основе word2vec есть над чем поработать и улучшить. Seq2seq же уже особо не перепишешь… Насчет статьи согласен — напишу обязательно
0
Sign up to leave a comment.
RNN: может ли нейронная сеть писать как Лев Толстой? (Спойлер: нет)