已解决
《动手学深度学习 Pytorch版》 9.6 编码器-解码器架构
来自网友在路上 170870提问 提问时间:2023-10-21 21:54:27阅读次数: 70
最佳答案 问答题库708位专家为你答疑解惑
为了处理这种长度可变的输入和输出, 可以设计一个包含两个主要组件的编码器-解码器(encoder-decoder)架构:
-
编码器(encoder):它接受一个长度可变的序列作为输入,并将其转换为具有固定形状的编码状态。
-
解码器(decoder):它将固定形状的编码状态映射到长度可变的序列。
9.6.1 编码器
编码器接口仅指定长度可变的序列作为编码器的输入 X。代码实现需要由继承这个Encoder基类的模型完成。
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
9.6.2 解码器
在下面的解码器接口中新增的 init_state 函数用于将编码器的输出(enc_outputs)转换为编码后的状态。
为了逐个地生成长度可变的词元序列,解码器在每个时间步都会将输入(例如:在前一时间步生成的词元)和编码后的状态映射成当前时间步的输出词元。
#@save
class Decoder(nn.Module):"""编码器-解码器架构的基本解码器接口"""def __init__(self, **kwargs):super(Decoder, self).__init__(**kwargs)def init_state(self, enc_outputs, *args):raise NotImplementedErrordef forward(self, X, state):raise NotImplementedError
9.6.3 合并编码器和解码器
#@save
class EncoderDecoder(nn.Module):"""编码器-解码器架构的基类"""def __init__(self, encoder, decoder, **kwargs):super(EncoderDecoder, self).__init__(**kwargs)self.encoder = encoderself.decoder = decoderdef 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)除了机器翻译,还有其它可以适用于”编码器-解码器“架构的应用吗?
时序模型很多都需要的吧。
查看全文
99%的人还看了
相似问题
- 探索NLP中的核心架构:编码器与解码器的区别
- 在 CelebA 数据集上训练的 PyTorch 中的基本变分自动编码器
- 19 Transformer 解码器的两个为什么(为什么做掩码、为什么用编码器-解码器注意力)
- 《动手学深度学习 Pytorch版》 9.6 编码器-解码器架构
- 读书笔记:多Transformer的双向编码器表示法(Bert)-3
- 8路高速光栅尺磁栅尺编码器4倍频计数转Modbus TCP网络模块 YL99-RJ45
- 变分自动编码器 (VAE)02/2 PyTorch 教程
- 计算机视觉: 基于隐式BRDF自编码器的文生三维技术
- 51单片机+EC11编码器实现可调参菜单+OLED屏幕显示
- VAE(变分自动编码器)
猜你感兴趣
版权申明
本文"《动手学深度学习 Pytorch版》 9.6 编码器-解码器架构":http://eshow365.cn/6-21076-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!