#《深度学习原理与TensorFlow实战》05 RNN能说会道
# 书源码地址:https://github.com/DeepVisionTeam/TensorFlowBook.git
# 原书中代码位置:https://github.com/DeepVisionTeam/TensorFlowBook/tree/master/rnn/chatbot
# win10 Tensorflow_gpu1.2.1 python3.6.1
# CUDA v8.0 cudnn-8.0-windows10-x64-v5.1
# 可运行代码(win10_py36分支):https://github.com/5455945/TensorFlowBook/tree/win10_py36/rnn/chatbot
书中代码比较老旧,测试在tensorflow的1.0.1–1.2.1中都不能直接原型,需要稍微修改下代码才可运行。本测试修改也不全面。仅仅能跑起来而已。
能跑起来的代码在
https://github.com/5455945/TensorFlowBook
https://github.com/5455945/TensorFlowBook/tree/win10_py36/rnn/chatbot
需要在TensorFlowBook\rnn\chatbot\data.snippet
目录下创建train目录。 TensorFlowBook\rnn\chatbot\data.snippet\train
。否则会提示错误:ValueError: Parent directory of ./data.snippet//train\conversation.ckpt doesn't exist, can't save.
运行C:\Python36\python.exe D:/git/DeepLearning/TensorFlowBook/rnn/chatbot/train_model.py
效果。
Preparing conversation data in ./data.snippet/
vocabulary path ./data.snippet/vocab100000 exsit. we will use the exised one
target path ./data.snippet/train.ids100000.enquiry already exist! we will use the existed one.
target path ./data.snippet/train.ids100000.answer already exist! we will use the existed one.
target path ./data.snippet/dev.ids100000.enquiry already exist! we will use the existed one.
target path ./data.snippet/dev.ids100000.answer already exist! we will use the existed one.
Creating 3 layers of 512 units.
Created model with fresh parameters.
Reading development and training data (limit: 0).
reading data line 1000
reading data line 1000
reading data line 2000
reading data line 3000
reading data line 4000
reading data line 5000
reading data line 6000
reading data line 7000
reading data line 8000
reading data line 9000
reading data line 10000
Start training ...
global step 2 learning rate 0.5000 step-time 1.69 perplexity 20891.46
eval: bucket 0 perplexity 29058.64
eval: bucket 1 perplexity 20040.32
eval: bucket 2 perplexity 19524.96
eval: bucket 3 perplexity 21444.03
current_step: 2, enquiry: 超级兰博基尼公交车", answer: 不错感觉感觉感觉感觉看了苹果苹果苹果苹果
current_step: 2, enquiry: 让人震撼的000年前中国的好照片, answer: 图片图片图片图片男男男新新是是是是是是
current_step: 2, enquiry: 父爱如山,父爱如风,父爱如影随形!, answer: 只是只是呢呢呢呢呢呢呢呢呢呢呢呢呢
current_step: 2, enquiry: 同学们:感恩节我们三会怎样呢?, answer: 说说说说美美美美美美美美美美.
current_step: 2, enquiry: 包大人,你太为难人了!, answer: 《《每个每个每个每个每个每个每个每个每个每个每个每个每个
current_step: 2, enquiry: 多少年来,我和小伙伴们都被学校坑了!「暴走漫画」, answer: 能能能能能能能能能能能不要不要不要不要不要不要不要不要不要不要不要不要不要不要
current_step: 2, enquiry: [00件生理常识]好好养生啊,你学会了吗?, answer: 小时候小时候小时候非常非常非常非常非常非常非常非常把把一只一只一只还它它它它它它它它
current_step: 2, enquiry: 饭后散个步,发现满城尽是红袖章。, answer: 能能能能能能能能版版版版版版版版版版版还还还还还还
current_step: 2, enquiry: 期待一会儿的东北美味烤肉加正宗酸菜。, answer: 还我我我我我所有所有所有所有所有所有所有所有所有所有所有所有不要不要不要不要不要不要不要
current_step: 2, enquiry: 寸头——是检验帅哥的唯一标准!有木有!被谁雷到?被谁电到?, answer: 说说说说说说版版版版版版版版版版版版版版版版版版版版版版版版版版版美美美美美美美美美美美美美美美美美
current_step: 2, enquiry: #晚安家人#哪部与车有关的电影给你留下的印象最深?, answer: 画画画我我我它它它它它它画画画先先先所有所有所有所有所有所有所有所有所有所有所有所有所有所有所有所有所有所有所有所有所有所有所有所有所有所有所有所有所有所有所有所有
current_step: 2, enquiry: 灯光啊,嫩把舞台照成一种色儿了,可惜这么好的舞美了。, answer: 画画画版版版版版我我我我我我我我我我我我我我我我我我我我我我所有所有所有所有所有所有所有所有所有所有所有所有所有所有所有所有所有所有所有所有
current_step: 2, enquiry: 今晚就读它了。人生如戏,更在意结局。直觉也许是错的。, answer: --说说说说说说说说说说说说看到看到看到看到看到看到看到看到看到看到看到看到看到看到看到看到看到看到说说说说说说说说说说说说说说说说说说
global step 4 learning rate 0.5000 step-time 0.71 perplexity 21261.78
eval: bucket 0 perplexity 30052.56
eval: bucket 1 perplexity 18552.89
eval: bucket 2 perplexity 20112.44
eval: bucket 3 perplexity 22628.13
current_step: 4, enquiry: 超级兰博基尼公交车", answer: 感觉感觉感觉感觉感觉感觉感觉感觉感觉苹果
current_step: 4, enquiry: 让人震撼的000年前中国的好照片, answer: 画图片男男男新新新新新新是是是想要
...
运行 C:\Python36\python.exe D:/git/DeepLearning/TensorFlowBook/rnn/chatbot/chatbot.py
效果。
如果仅仅运行几次训练,是不会出结果的,至少current_step: 要到1000左右。
49
https://github.com/5455945/Seq2Seq_Chatbot_QA/tree/win10_py36
# 这个代码的win10_py36分支,是一个完整的能够在win10 python3.6.1 tensorflow1.2.1下运行的demo
https://github.com/5455945/Seq2Seq_Chatbot_QA/tree/win10_py36
运行结果:
C:\Python36\python.exe D:/git/DeepLearning/chatbot/Seq2Seq_Chatbot_QA/s2s.py --size 512 --num_layers 2 --num_epoch 5 --batch_size 64 --num_per_epoch 500000 --model_dir ./model/model1
dim: 6865
准备数据
bucket 0 中有数据 506206 条
bucket 1 中有数据 1091400 条
bucket 2 中有数据 726867 条
bucket 3 中有数据 217104 条
共有数据 2541577 条
开启投影:512
Epoch 1:
[====================] 100.0% 500032/500000 loss=2.870 50m28s/50m27s
Epoch 2:
[====================] 100.0% 500032/500000 loss=2.369 49m18s/49m18s
Epoch 3:
[====================] 100.0% 500032/500000 loss=2.221 49m39s/49m39s
Epoch 4:
[====================] 100.0% 500032/500000 loss=2.136 48m45s/48m45s
Epoch 5:
[====================] 100.0% 500032/500000 loss=2.072 45m20s/45m19s
Process finished with exit code 0
C:\Python36\python.exe D:/git/DeepLearning/chatbot/Seq2Seq_Chatbot_QA/s2s.py --size 512 --num_layers 2 --num_epoch 5 --batch_size 64 --num_per_epoch 500000 --model_dir ./model/model1 --test True
dim: 6865
开启投影:512
> 你好
我是说,我们要去哪儿
> 中国很美
我们不知道,我们不是在这里的
> 周末运动吧
是的
> 你是谁
我是个军队
> 你从哪里来
我不知道
> 你到哪里去
我不知道
> 你喜欢我吗?
我喜欢
> 你吃了吗?
我不知道
> 你吃了吗?
我不知道
> 你喜欢喝酒吗?
我喜欢
> 千山万水总是情
我们的生活是一个人
> 你说话没有逻辑啊
你说的是什么
> 一枝红杏出墙来
是的
> 其他
不
> 如果
我们会把它们送回来
> 但是
我们不知道
> 哈哈哈哈
你们在这里干什么,我们走
>
Process finished with exit code 1
C:\Python36\python.exe D:/git/DeepLearning/chatbot/Seq2Seq_Chatbot_QA/s2s.py --size 512 --num_layers 2 --num_epoch 5 --batch_size 64 --num_per_epoch 500000 --model_dir ./model/model1 --test False --bleu 1000
dim: 6865
准备数据
bucket 0 中有数据 506206 条
bucket 1 中有数据 1091400 条
bucket 2 中有数据 726867 条
bucket 3 中有数据 217104 条
共有数据 2541577 条
开启投影:512
75%|███████▌ | 750/1000 [01:44<00:36, 6.92it/s]2017-07-14 10:48:23.407970: I c:\tf_jenkins\home\workspace\release-win\m\windows-gpu\py\36\tensorflow\core\common_runtime\gpu\pool_allocator.cc:247] PoolAllocator: After 351571 get requests, put_count=351568 evicted_count=1000 eviction_rate=0.0028444 and unsatisfied allocation rate=0.00313735
2017-07-14 10:48:23.408500: I c:\tf_jenkins\home\workspace\release-win\m\windows-gpu\py\36\tensorflow\core\common_runtime\gpu\pool_allocator.cc:259] Raising pool_size_limit_ from 100 to 110
100%|██████████| 1000/1000 [02:18<00:00, 7.42it/s]
BLUE: 1.63 in 1000 samples