1.环境配置:
ubantu(16.04)
python(3.5)
tensorflow(0.12.0)
export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.10.0-cp35-cp35m-linux_x86_64.whl
sudo pip3 install --upgrade $TF_BINARY_URL
2.模型介绍:
https://www.tensorflow.org/versions/r0.12/tutorials/seq2seq/
本项目基于seq2seq模型:
问答对:
问题:你是谁?-->转为向量(20,9,10)
答案:我是你的机器人。-->转为向量(30,9,20,1,3,4,5)
将以上向量放入模型进行训练。
3.模型优化:
layer_size = 256 # 每层大小
num_layers = 3 # 层数
增大layer_size的大小以扩大特征矩阵,调整隐层数量,调整学习率函数,提高训练次数。
4.模型使用:
(1)首先在data文件夹里放置训练集文件,并命名为dgk_shooter_min.conv,数据格式请参考我发给你的实例文件,编码请使用utf-8
(2)运行read_data.py将初始数据转化为问答对,并分割数据成训练集和测试集,保存为:
train_encode_file = 'data/train.enc'
train_decode_file = 'data/train.dec'
test_encode_file = 'data/test.enc'
test_decode_file = 'data/test.dec'
然后程序会以测试集以及训练集中的问答对为输入生成词汇表(类似搜索引擎的索引库),接着基于以上生成的词汇表,把问答对转化为向量矩阵,以方便在模型中训练。
(3)运行cnnbrain_model.py读取训练集并且训练模型,注意如果不停止模型会一直不停的自动训练下去。并且模型会自动调整学习率。如果人为终止程序,在下次运行时程序会接着上次的模型继续进行训练。
(4)运行test.py进行模型测试