import torch
from data import PoemData
from torch.utils.data import DataLoader
from config import Config
from model.lstm import Model
from tqdm import tqdm
import torch.nn as nn
from tensorboardX import SummaryWriter
import time
my_config = Config()
data = PoemData()
ix2word = data.ix2word
word2ix = data.word2ix
writer = SummaryWriter(log_dir=my_config.log_path + '/' + time.strftime('%m-%d_%H.%M', time.localtime()))
# data示例
# data[0]
# (tensor([8291, 6731, 4770, 1787, 8118, 7577, 7066, 4817, 648, 7121, 1542, 6483,
# 7435, 7686, 2889, 1671, 5862, 1949, 7066, 2596, 4785, 3629, 1379, 2703,
# 7435, 6064, 6041, 4666, 4038, 4881, 7066, 4747, 1534, 70, 3788, 3823,
# 7435, 4907, 5567, 201, 2834, 1519, 7066, 782, 782, 2063, 2031, 846]), #text
# tensor([6731, 4770, 1787, 8118, 7577, 7066, 4817, 648, 7121, 1542, 6483, 7435,
# 7686, 2889, 1671, 5862, 1949, 7066, 2596, 4785, 3629, 1379, 2703, 7435,
# 6064, 6041, 4666, 4038, 4881, 7066, 4747, 1534, 70, 3788, 3823, 7435,
# 4907, 5567, 201, 2834, 1519, 7066, 782, 782, 2063, 2031, 846, 7435])) #label
# 生成数据迭代器
poem_loader = DataLoader(data, batch_size=my_config.batch_size, shuffle=True)
def train():
model = Model()
model.train()
model = model.cuda()
optimizer = torch.optim.Adam(model.parameters(), lr=my_config.lr)
scheduler = torch.optim.lr_scheduler.StepLR(optimizer, step_size=10, gamma=0.1)
criterion = nn.CrossEntropyLoss()
total_batch = 0
for epoch in range(my_config.epoch):
print(epoch)
train_loss = 0.0
train_loader = tqdm(poem_loader)
for i, data in enumerate(train_loader, 0):
inputs, labels = data[0].cuda(), data[1].cuda()
labels = labels.view(-1) # 拼接labels对齐outputs
optimizer.zero_grad() # 清除上个batch的梯度信息
outputs, hidden = model(inputs)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()
train_loss += loss.item()
if (i + 1) % 200 == 0:
print('\t loss:{:.4f}'.format(loss.item()))
writer.add_scalar("loss/train", loss.item(), total_batch)
total_batch += 1
scheduler.step()
# 训练结束后保存模型
torch.save(model.state_dict(), 'model.pth')
if __name__ == '__main__':
train()
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
<项目介绍> - - 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
资源推荐
资源详情
资源评论
收起资源包目录
LSTM_tangshi-master.zip (11个子文件)
LSTM_tangshi-master
data
tang.npz 5.49MB
try.py 95B
.idea
misc.xml 195B
.gitignore 176B
data.py 2KB
model
lstm.py 1KB
train.py 2KB
test.py 2KB
log
06-28_11.28
events.out.tfevents.1624850893.DESKTOP-R6TE86O 29KB
06-28_22.13
events.out.tfevents.1624889607.DESKTOP-R6TE86O 10KB
config.py 454B
共 11 条
- 1
资源评论
奋斗奋斗再奋斗的ajie
- 粉丝: 231
- 资源: 2166
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功