深度学习----------------------------编码器、解码器架构

news/2024/10/4 22:16:17 标签: 深度学习, 人工智能

目录

  • 重新考察CNN
  • 重新考察RNN
  • 编码器-解码器架构
  • 总结
  • 编码器=解码器架构
    • 编码器
    • 解码器
    • 合并编码器和解码器

重新考察CNN

编码器:将输入编码成中间表达形式(特征)

解码器:将中间表示解码成输出。

在这里插入图片描述




重新考察RNN

编码器:文本表示成向量

解码器:向量表示成输出

在这里插入图片描述




编码器-解码器架构

一个模块被分为两块

                    编码器处理输出
                    解码器生成输出

在这里插入图片描述




总结

使用编码器-解码器架构的模型,编码器负责表示输入,解码器负责输出。




编码器=解码器架构

编码器

# 编码器
from torch import nn


class Encoder(nn.Module):
    """编码器-解码器结构的基本编码器接口"""

    #  Encoder 类的构造函数,它接受任意数量的关键字参数
    def __init__(self, **kwargs):
        # 调用了父类 nn.Module 的构造函数,确保正确初始化
        super(Encoder, self).__init__(**kwargs)

    # 给一个X,输出其状态

    def forward(self, X, *args):
        # 抛出一个 NotImplementedError 异常,表示该方法需要在子类中进行实现。
        raise NotImplementedError



解码器

# 解码器
class Decoder(nn.Module):
    def __init__(self, **kwargs):
        super(Decoder, self).__init__(**kwargs)

    # 有一个中介状态,编码器的东西传给解码器,拿到编码器的输出enc_outputs,然后初始化状态。

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

    # 拿到额外的输出X, state是用来不断更新的

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



合并编码器和解码器

# 编码器
from torch import nn


# 合并编码器和解码器
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)





http://www.niftyadmin.cn/n/5690381.html

相关文章

mac Wireshark You do not have permission to capture on device “rvio“.

原因: 权限不足 解决方案: 打开终端在终端输入 whoamin (会在终端显示本机的实际用户名字) 例如:xiaoming进入 /dev 目录 cd /dev输入命令:ls -la | grep bp输入命令:sudo chown whoamin xiaoming:admin bp*重新打开 …

【电脑·安卓游戏】《黑神话:悟空》像素版

《黑神话像素版》是一款别出心裁的游戏力作,由bilbil创作者打造。该游戏以像素化的艺术风格,精妙地简化并再现了《黑神话:悟空》中的一系列核心玩法与经典场景。通过匠心独运的设计,它不仅成功复刻了原作中引人入胜的战斗系统、细…

动态规划的技巧

以下是我的个人刷题经验,请大家谨慎采纳,如有疑问或认为不对的,欢迎评论和讨论。 1. 在dp里使用辅助位置 有时候边界条件要特殊考虑,比较麻烦,为了简化对边界条件的处理,可以适当增加辅助位置。 1. 1. 相…

10其他内容补充

如何生成随机数原理详细分析 文章目录 如何生成随机数原理详细分析原理如果使用相同的随机数种子,得到的随机数序列会是相同的吗示例为什么需要随机数种子 动态内存管理前言malloc函数calloc函数realloc函数free函数 - 避免内存泄漏常见的动态内存错误 原理 说到如何生成一个随…

TCN模型实现电力数据预测

关于深度实战社区 我们是一个深度学习领域的独立工作室。团队成员有:中科大硕士、纽约大学硕士、浙江大学硕士、华东理工博士等,曾在腾讯、百度、德勤等担任算法工程师/产品经理。全网20多万粉丝,拥有2篇国家级人工智能发明专利。 社区特色&a…

[深度学习][python]yolov11+deepsort+pyqt5实现目标追踪

【算法介绍】 YOLOv11、DeepSORT和PyQt5的组合为实现高效目标追踪提供了一个强大的解决方案。 YOLOv11是YOLO系列的最新版本,它在保持高检测速度的同时,通过改进网络结构、优化损失函数等方式,提高了检测精度,能够同时处理多个尺…

59 mysql 存储引擎之 PERFORMANCE_SCHEMA

前言 我们这里来看一下 performance_schema 存储引擎, 我们常见的那些 general_log, slow_log什么的, 都是基于 performance_schema 它主要是 使用 ha_perfschema 下面 api 来操作 performance_schema 中的信息 我们这里基于 performance_schema.variables_by_thread 这张基…

通过freepbx搭建小型电话系统的过程

领导说公司的客服电话需要实现语音导航和非工作时间自动接听播放语音提示的功能。任务自然落到了伟大的程序员的头上,本着为公司节约成本原则遂百度了一番,找到了asterisk 和freeswitch两个比较流行的电话系统。经过对比和考虑公司的情况选择了asterisk系…