86.编码器-解码器架构以及代码实现

news2024/9/23 21:24:37

1. 重新考察CNN

在这里插入图片描述

2. 重新考察RNN

在这里插入图片描述

3. 编码器-解码器架构

在这里插入图片描述

4. 总结

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

5. 代码实现

5.1 编码器

在编码器接口中,我们只指定长度可变的序列作为编码器的输入X。 任何继承这个Encoder基类的模型将完成代码实现。

from torch import nn

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

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

5.2 解码器

在下面的解码器接口中,我们新增一个init_state函数, 用于将编码器的输出(enc_outputs)转换为编码后的状态。 注意,此步骤可能需要额外的输入,例如:输入序列的有效长度。 为了逐个地生成长度可变的词元序列, 解码器在每个时间步都会将输入 (例如:在前一时间步生成的词元)和编码后的状态 映射成当前时间步的输出词元。

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

    # enc_outputs是encoder所有的输出
    def init_state(self, enc_outputs, *args):
        raise NotImplementedError

    # state一开始是从encoder拿过来,之后不断更新
    # X是额外的输入
    def forward(self, X, state):
        raise NotImplementedError

5.3 合并编码器和解码器

总而言之,“编码器-解码器”架构包含了一个编码器和一个解码器, 并且还拥有可选的额外的参数。 在前向传播中,编码器的输出用于生成编码状态, 这个状态又被解码器作为其输入的一部分。

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_X 是encoder的输入
        enc_outputs = self.encoder(enc_X, *args)
        # 把encoder的输出拿到解码器的init_state中,变成了解码器的初始状态
        dec_state = self.decoder.init_state(enc_outputs, *args)
        # 再把中间状态dec_state和decoder的输入dec_X传入解码器
        return self.decoder(dec_X, dec_state)

“编码器-解码器”体系架构中的术语状态 会启发人们使用具有状态的神经网络来实现该架构。 在下一节中,我们将学习如何应用循环神经网络, 来设计基于“编码器-解码器”架构的序列转换模型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/171325.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构 - 学习笔记 - 红黑树前传——234树

数据结构 - 学习笔记 - 红黑树前传——234树简介结点类型与红黑树对应关系插入逻辑插入步骤演示2结点插入3结点插入(红黑树旋转)共对应6种红黑树情形有4种情形需要再平衡4结点插入(红黑树变色)234树转红黑树触发分裂有4种情形需要…

234. 回文链表

1、题目描述 额外要求:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题? 2、题解 2.1 解题思路1 使用额外的栈空间,先将链表中所有的元素依次压入栈中,得到链表的逆序,然后将栈中的元素依次弹出和链表中的元素从…

C++关于初始化列表的细节(必须/不能使用初始化列表的情况、初始化列表的效率分析)

必须使用初始化列表初始化的变量 const修饰的成员变量。 class A { public:A() { a 1; }int a; };构造函数内使用a 1初始化变量a,但这本质上是一种赋值,而我们都知道,const类型的变量是不允许赋值的。 没有默认构造函数的成员变量 所有变量…

百度安全在线查询提示风险原因分析与解决思路

很多站长看到自己的网站被百度提示:“百度网址安全中心提醒您:该页面可能存在违法信息”,这样的提示,都会惊讶自己网站昨天还好好的,怎么今天就提示这样的信息呢?在弄清楚这个问题之前,我们要知…

实时频谱仪的外部I、Q输出端口的同步扫描介绍

实时频谱分析仪与外部GPIO,I、Q输出端口等集成在一起。外部GPIO由外部触发功能组成,通过使用外部硬件和/或多个RTSA设备,可以实现同步扫描设置,以自动进行频谱扫描和捕获。同时,I、Q输出端口有助于与外部高速数字化仪集…

联合证券|日元疯狂跳水30000点!神秘无人机现身韩国萨德基地!

刚刚,又有大事发生! 日本央行意外宣告保持收益率曲线忍受区间不变。日元忽然大暴跌,日元兑美元狂泻超三万点。韩国也有大音讯,据韩联社报导,1月17日,一架无人机挨近韩国“萨德”基地时被美军用搅扰枪击落&a…

2023跳槽最新面试题整理——JVM系列

今天是农历2022年腊月二十七了,和往常的春节假期、五一假期和十一假期一样都是团队中坚持到最后的一个。没几天也要快过年了,我先提前向大家拜个早年——祝大家兔年大吉,新春快乐,财源滚滚,万事如意。 今年从十一…

如何使用 Selenium 实现自动化操作?

目录 前言 一、关于Selenium 1.1、为什么选择它作为web自动化的测试工具? 1.2、Selenium操作浏览器的原理 二、实现一个简单的自动化 2.1、使用自动化操作浏览器 2.2、Selenium常用的API 2.2.1、查找页面元素 小结 前言 本篇咱们来谈谈Selenium自动化脚本是…

pfx证书转pem、crt、key

今天测试端的服务器突然不能下载苹果APP了,经查看,发现原来是测试环境的https证书过期了,需要更换证书,于是赶紧从阿里云更新我们的最新证书 我们程序部署在tomcat上,于是下载tomcat版本,下载完成后如下 我…

【微信小程序-原生开发】实用教程05-首页(含自定义调试模式、插入图片、图文排版、底部留白、添加本地图片)

开始前,请先完成启动/欢迎/首屏广告页的开发,详见 【微信小程序-原生开发】实用教程04-启动/欢迎/首屏广告页(含倒计时、添加文字、rpx、定义变量和函数、读取变量、修改变量、wx.reLaunch 页面跳转、生命周期 onReady等) https://blog.csdn…

输入设备应用

1.输入设备其实就是能够产生输入事件的设备就称为输入设备, 常见的输入设备包括鼠标、键盘、触摸屏、按钮等等,它们都能够产生输入事件,产生输入数据给计算机系统。2.对于输入设备的应用编程其主要是获取输入设备上报的数据、 输入设备当前状…

驱动程序那点事儿

是什么 驱动程序是一个软件组件,(添加到操作系统中的一小块代码),是操作系统和设备通信的桥梁。应用程序需要从设备中读取某些数据,操作系统会调用由驱动程序实现的函数。驱动程序了解如何与设备硬件通信以获取数据。当…

菜鸟程序员如何快速进阶成为编程老司机?

菜鸟程序员如何摆脱稚嫩,快速成长为一名资深码农? 以下这些事情,帮你快速打好基础。 如果你想成为更好的开发者,你应该尤其注意第10点和第14点。 1.积极大胆地谷歌。你得知道如何有效地组织搜索关键字,查阅别人写的…

高并发系统设计 --热点key问题解决

热点Key问题,这是一个老生常谈的问题了,今天我们来仔细的去剖析这个问题。 热点key带来的问题 流量集中。达到服务器处理上限(CPU,网络IO等)会影响在同一个Redis实例上其他key的读写请求操作热key请求落到同一个Redi…

【魅力开源】第7集:开源ERP系统Odoo发展史(Odoo中文社区野史2019版)

文章目录前言历程后记前言 开源 ERP 系统 Odoo 的发展史。 历程 2002 年比利时13 岁开 始学习编程序的 Fabien Pinckaers 所创建创办了Tiny Sprl 公司。Tiny Sprl 公司的第一个产品就是开发 Tiny ERP,即后来的 OpenERP,现在改名为Odoo。 2007 年 Ope…

Sklearn标准化和归一化方法汇总(3):范数归一化

Sklearn中与特征缩放有关的五个函数和类,全部位于sklearn.preprocessing包内。作为一个系列文章,我们将逐一讲解Sklearn中提供的标准化和归一化方法,以下是本系列已发布的文章列表: Sklearn标准化和归一化方法汇总(1)&#xff1a…

博云荣获证券基金信创联盟年度优秀成员

1月12日,证券基金行业信息技术应用创新联盟(以下简称“联盟”)2022年度峰会在上海顺利举行。会上,联盟为2022年积极参与联盟工作的成员单位进行了颁奖,博云获评信创联盟年度优秀成员奖。 联盟是在中国证券监督管理委员…

Spring | SM整合(Spring+MyBatis)

0️⃣使用工具编辑器:IDEA企业版构建系统:Maven数据库:MySQL1️⃣创建项目🎏创建maven项目选择新建项目,在E盘下创建名为SMDemo的项目,构建系统选择Maven.🎏项目结构src/main/java - java 逻辑代…

企业宣传新闻稿撰写方法和技巧分享,纯干货

企业宣传新闻稿重点在于“宣传”,目的性强,具有极强的商业价值,怎么撰写是一大难关。 企业新闻稿堪比公关小组,表面上看起来只是简简单单一篇新闻稿,但是实际上企业新闻稿也能起到大作用,企业新闻稿的价值…

Python Kafka客户端性能测试比较

前言 由于工作原因使用到了 Kafka,而现有的代码并不能满足性能需求,所以需要开发高效读写 Kafka 的工具,本文是一个 Python Kafka Client 的性能测试记录,通过本次测试,可以知道选用什么第三方库的性能最高&#xff0c…