编码器-解码器架构-读书笔记

文章目录

  • 1. Encoder-Decoder 架构图
  • 2. Encoder_Decoder 代码
  • 3. 小结

1. Encoder-Decoder 架构图

  • 目标:通过编码器与解码器架构,我们可以将不同长度的序列先通过编码器编码成固定长度的隐藏层状态,再通过解码器将固定长度的隐藏层状态解码成不同长度的序列
    编码器-解码器架构-读书笔记_第1张图片

2. Encoder_Decoder 代码

  • 接口代码
from torch import nn

class Encoder(nn.Module):
	"""编码器-解码器架构的基本编码器接口"""
	def __init__(self,**kwargs):
		super(Encoder,self).__init__(**kwargs)
	def forward(self,X,*args):
		raise NotImplementedError
	
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

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)

3. 小结

Encoder-Decoder 架构定义了三个类

  • Encoder 类
  • Decoder 类
  • EncoderDecoder 类
    而这种架构非常像我们设计模式中的策略者模式,通过策略者模式,我们可以非常清晰的将业务逻辑设计出来。
  • OmniGraffle画图软件

你可能感兴趣的:(pytorch,架构,深度学习,python)