Tensorflow Poems是一款基于RNN(循环神经网络)的 Github开源项目,它能通过学习大量古诗文和歌词然后能够自己来模仿创造诗文和歌词。
简介
就项目本身,其意义不是很大,权当娱乐就行。这里的重点是解读如何从最原始的诗句,到数据的读取,到数据预处理,到模型的构建,再到最后的训练和使用流程。
数据源
通过上面的github地址可以下载到项目源码,其中古诗文的数据集是dataset/data/poems.txt
,打开可以看到如下的内容(篇幅限制,只显示了前两行诗句)。
1 | 首春:寒随穷律变,春逐鸟声开。初风飘带柳,晚雪间花梅。碧林青旧竹,绿沼翠新苔。芝田初雁去,绮树巧莺来。 |
整体的格式还是蛮清晰的,每行就代表一首诗,每首诗由标题和内容两部分组成,中间以冒号分割。
预处理
代码位于poems.py
文件的process_peoms
方法
1 | def process_poems(file_name): |
模型
代码位于model.py
的rnn_model
方法
1 | def rnn_model(model, input_data, output_data, vocab_size, rnn_size=128, num_layers=2, batch_size=64, |
训练
获取数据batch的代码位于poem.py
的generate_batch
方法
1 | def generate_batch(batch_size, poems_vec, word_to_int): |
训练代码位于tang_poems.py
的run_training
方法
1 | def run_training(): |
使用
取词代码位于tang_poems.py
的to_word
方法
1 | def to_word(predict, vocabs): |
作诗代码位于tang_peoms.py
的gen_poem
方法
1 | def gen_poem(begin_word): |