python-pytorch官方示例Generating Names with a Character-Level RNN的部分理解0.5.03

pytorch官方示例Generating Names with a Character-Level RNN的部分理解

模型结构

功能

输入一个类别名和一个英文字符,就可以自动生成这个类别,且以英文字符开始的姓名

关键技术

  1. 将字符进行one-hot编码
  2. 名字最大长度20,就是使用模型预测20次,下一个字符根据上一个字符循环预测,最后将字符串连接在一起输出一个名字
  3. 如果是分类任务,输入的名字是字符串表示的,因此在循环这个名字长度,每个字符输入模型中,得到的hidden作为下一次字符预测模型的参数,如官方的分类示例:https://pytorch.org/tutorials/intermediate/char_rnn_classification_tutorial.html。 因此最后一个名字字符的预测output将作为softmax的参数进行预测

模型输入

1x128是hidden层,1x18是某一类别的one-hot编码,1x59是某一个英文字符的ont-hot编码,如下面就可以实现某一个字符的one-hot

python 复制代码
tensor = torch.zeros(1, n_categories)
tensor[0][li] = 1

模型输出

输出是1x59,就是预测的一个字符。

预测实现

  1. 名字是由多个字符串组合的,根据给的英文字符预测下一个字符,再根据这字符预测下一个字符,一直反复到EOS时停止
python 复制代码
for i in range(max_length):
    output, hidden = rnn(category_tensor, input[0], hidden)
    topv, topi = output.topk(1)
    topi = topi[0][0]
    if topi == n_letters - 1:
        break
    else:
        letter = all_letters[topi]
        output_name += letter
    input = inputTensor(letter)
相关推荐
我滴老baby2 分钟前
0基础速通Python+AI|2026热门轻量化玩法全攻略:从入门到实战,3天搞定AI应用开发
开发语言·人工智能·python
雷帝木木5 分钟前
Python 类型提示与静态类型检查的高级应用
人工智能·python·深度学习·机器学习
一个天蝎座 白勺 程序猿5 分钟前
Python(29)Python生成器函数深度解析:asyncio事件循环的底层实现与异步编程实战
开发语言·python
七夜zippoe5 分钟前
Python RESTful API设计终极指南:从理论到企业级实战
开发语言·python·http·pandas·restful api
dinglu1030DL8 分钟前
golang如何实现告警分级与升级_golang告警分级与升级实现步骤
jvm·数据库·python
xcLeigh8 分钟前
Python开篇:撬动未来的万能钥匙 —— 从入门到架构的全链路指南
数据库·python·架构·教程·应用·网页
雷帝木木10 分钟前
Python 中的正则表达式:从基础到高级应用
人工智能·python·深度学习·机器学习
m0_4636722010 分钟前
Golang如何做图片处理缩放_Golang图片处理教程【收藏】
jvm·数据库·python
车位涂鸦10 分钟前
在线浏览“秀人网合集”的新思路:30 行 Python 把封面图链接秒变本地可点图库
开发语言·python