pytorch下使用下使用LSTM神经网络写诗实例神经网络写诗实例
今天小编就为大家分享一篇pytorch下使用LSTM神经网络写诗实例,具有很好的参考价值,希望对大家有所帮
助。一起跟随小编过来看看吧
在pytorch下,以数万首唐诗为素材,训练双层LSTM神经网络,使其能够以唐诗的方式写诗。
代码结构分为四部分,分别为代码结构分为四部分,分别为
1.model.py,定义了双层LSTM模型
2.data.py,定义了从网上得到的唐诗数据的处理方法
3.utlis.py 定义了损失可视化的函数
4.main.py定义了模型参数,以及训练、唐诗生成函数。
参考:电子工业出版社的《深度学习框架PyTorch:入门与实践》第九章
main代码及注释如下代码及注释如下
import sys, os
import torch as t
from data import get_data
from model import PoetryModel
from torch import nn
from torch.autograd import Variable
from utils import Visualizer
import tqdm
from torchnet import meter
import ipdb
class Config(object):
data_path = 'data/'
pickle_path = 'tang.npz'
author = None
constrain = None
category = 'poet.tang' #or poet.song
lr = 1e-3
weight_decay = 1e-4
use_gpu = True
epoch = 20
batch_size = 128
maxlen = 125
plot_every = 20
#use_env = True #是否使用visodm
env = 'poety'
#visdom env
max_gen_len = 200
debug_file = '/tmp/debugp'
model_path = None
prefix_words = '细雨鱼儿出,微风燕子斜。'
#不是诗歌组成部分,是意境
start_words = '闲云潭影日悠悠'
#诗歌开始
acrostic = False
#是否藏头
model_prefix = 'checkpoints/tang'
#模型保存路径
opt = Config()
def generate(model, start_words, ix2word, word2ix, prefix_words=None):
'''
给定几个词,根据这几个词接着生成一首完整的诗歌
'''
results = list(start_words)
start_word_len = len(start_words)
# 手动设置第一个词为<START>
# 这个地方有问题,最后需要再看一下
input = Variable(t.Tensor([word2ix['<START>']]).view(1,1).long())
if opt.use_gpu:input=input.cuda()
hidden = None
if prefix_words:
for word in prefix_words:
output,hidden = model(input,hidden)
# 下边这句话是为了把input变成1*1?