网络模型(Seq2Seq-注意力机制-编解码)

概念

用于处理序列问题:翻译(N vs N)、信息提取(N vs 1)、生成(1 vs N)。
Seq2Seq
RNN 要求输入队列和输出队列等长,Seq2Seq 可以解决输入队列与输出队列不等长的问题。

实验(验证码识别)

数据集:生成 4 位数字的验证码图片(测试集和训练集各 1000 张),图片名称为 index.code.jpg,截取 code 作为标签。

网络结构:

  • 编码:全连接 + 标准化(BN)+ 激活(ReLU)+ LSTM。
  • 解码:LSTM + 全连接 + softmax(多分类)。

优化器:Adam。

损失函数:均方差(MSELoss)。

输出:4 个 one-hot 类型,结果为最大的索引值。

生成验证码

import random
from PIL import Image, ImageDraw, ImageFont


# 随机数字
def rand_char():
    return chr(random.randint(48, 57))


# 随机背景颜色
def rand_bg():
    return (random.randint(50, 150), random.randint(50, 150), random.randint(50, 150))


# 随机数字颜色
def rand_color():
    return (random.randint(100, 255), random.randint(100, 255), random.randint(100, 255))


width = 240
height = 60
font = ImageFont.truetype("arial.ttf", size=36)
for i in range(1000):
    img = Image.new("RGB", (width, height), (255, 255, 255))
    draw = ImageDraw.ImageDraw(img)
    # 画背景
    for x in range(width):
        for y in range(height):
            draw.point((x, y), rand_bg())
    # 写数字
    chrs = []
    for n in range(4):
        each = rand_char()
        chrs.append(each)
        draw.text((n * 60 + 10, 10
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值