编解码器架构

一、定义

0、机器翻译是序列转换模型的一个核心问题, 其输入和输出都是长度可变的序列。 为了处理这种类型的输入和输出, 我们设计一个包含两个主要组件的架构:

第一个组件是一个编码器(encoder): 它接受一个长度可变的序列作为输入, 并将其转换为具有固定形状的编码状态。

第二个组件是解码器 (decoder): 它将固定形状的编码状态映射到长度可变的序列。 这被称为编码器-解码器(encoder-decoder)架构。

编解码器架构,模型分为两块:编码器处理输入,解码器处理输出

1、对于CNN:就是先做特征提取,然后在输出层做预测

(1)编码器:将输入编程为中间表达形式(特征)-将文本表示成向量

(2)解码器:将中间表示解码成输出-向量表示成输出

二、代码

1、编码器

复制代码
from torch import nn

#@save
class Encoder(nn.Module):
    """编码器-解码器架构的基本编码器接口"""
    def __init__(self, **kwargs):
        super(Encoder, self).__init__(**kwargs)

    def forward(self, X, *args):
        raise NotImplementedError

2、解码器

复制代码
#@save
class Decoder(nn.Module):
    """编码器-解码器架构的基本解码器接口"""
    def __init__(self, **kwargs):
        super(Decoder, self).__init__(**kwargs)

    def init_state(self, enc_outputs, *args):
        raise NotImplementedError

    def forward(self, X, state):
        raise NotImplementedError

3、合并编解码器

复制代码
#@save
class EncoderDecoder(nn.Module):
    """编码器-解码器架构的基类"""
    def __init__(self, encoder, decoder, **kwargs):
        super(EncoderDecoder, self).__init__(**kwargs)
        self.encoder = encoder
        self.decoder = decoder

    def forward(self, enc_X, dec_X, *args):
        enc_outputs = self.encoder(enc_X, *args)
        dec_state = self.decoder.init_state(enc_outputs, *args)
        return self.decoder(dec_X, dec_state)

三、小结

1、"编码器-解码器"架构可以将长度可变的序列作为输入和输出,因此适用于机器翻译等序列转换问题。

2、编码器将长度可变的序列作为输入,并将其转换为具有固定形状的编码状态。

3、解码器将具有固定形状的编码状态映射为长度可变的序列。

相关推荐
适应规律1 分钟前
【无标题】
人工智能·python·算法
Rain5098 分钟前
mini-cc 的 MCP 协议:给 AI 装个 USB-C 接口
c语言·开发语言·前端·人工智能·架构·node.js·ai编程
XLYcmy8 分钟前
全链路验证测试系统:一个针对智能代理(Agent)系统全链路能力的自动化验证脚本
分布式·python·http·网络安全·ai·llm·agent
有味道的男人19 分钟前
电商效率翻倍:京东全量商品信息抓取
python
华科大胡子28 分钟前
AI开发者的网络卡点:Anthropic连接超时
开发语言·php
原来是猿41 分钟前
博客系统自动化测试实战总结
python
磊 子1 小时前
STL无序关联容器—unorded_set+unorded_map
开发语言·c++
AI人工智能+电脑小能手1 小时前
【大白话说Java面试题 第84题】【Mysql篇】第14题:为什么用 InnoDB 存储引擎的表建议用整型的自增主键?
java·开发语言·数据库·mysql·面试
小江的记录本1 小时前
【JVM虚拟机】JVM调优:常用JVM参数、调优核心指标、OOM排查、GC日志分析、Arthas工具使用(附《思维导图》+《面试高频考点清单》)
java·jvm·spring boot·后端·python·spring·面试
大数据魔法师1 小时前
Streamlit(十三)- API 参考文档(六)- 媒体展示组件
python·web