AE(线性)模型及代码实现

1.自编码器

自编码器(Auto-Encoder),是一种无监督式学习模型。利用输入数据 X 本身作为监督,来指导神经网络尝试学习一个映射关系,从而得到一个重构输出 X1。

算法模型包含两个主要的部分:Encoder(编码器)和Decoder(解码器)。Encoder的作用是把高维输入X编码成低维的隐变量h,从而让神经网络提取出最有信息量的特征;Decoder的作用是把隐藏层的隐变量h还原成原来的高维度,从而重构出原来的输入。模型结构如图所示:

 自编码器的意义在于,强制自编码器学习训练数据的最显著特征,学习出隐变量h,再用h去完成一些任务。h相对于原始输入X来说,维度大大降低,可以理解为一种非线性降维的方法。

其优点在于:泛化性强,无监督,不需要数据标注。

2.线性自编码器

最为简单的自动编码器是由线性层构成的,它看起来就像是一个普通的深度神经网络DNN,只不过其输入和输出层神经元数量一致,且往往具有对称性。

随机初始化一个100维的tensor并重构:

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是一个简单的自注意力编码器模型的 PyTorch 代码示例: ```python import torch import torch.nn as nn class SelfAttentionEncoder(nn.Module): def __init__(self, input_size, hidden_size, num_layers): super(SelfAttentionEncoder, self).__init__() self.input_size = input_size self.hidden_size = hidden_size self.num_layers = num_layers self.embedding = nn.Embedding(input_size, hidden_size) self.attention = nn.MultiheadAttention(hidden_size, num_heads=1) self.fc = nn.Linear(hidden_size, hidden_size) self.dropout = nn.Dropout(0.1) def forward(self, input_seq): embedded = self.embedding(input_seq) embedded = embedded.permute(1, 0, 2) # transpose batch and sequence length dimension att_output, _ = self.attention(embedded, embedded, embedded) att_output = att_output.permute(1, 0, 2) att_output = self.fc(att_output) att_output = self.dropout(att_output) return att_output ``` 在这个例子中,我们定义了一个名为 `SelfAttentionEncoder` 的类,它继承自 PyTorch 的 `nn.Module` 类。该编码器接受一个输入序列,其中每个元素都是一个整数,表示输入序列中的一个标记或单词。 该模型的主要组成部分是一个嵌入层 `self.embedding`,用于将输入序列中的整数标记转换为连续向量表示。然后,我们使用 `nn.MultiheadAttention` 类来计算自注意力,该类接受三个相同的输入张量,分别用于查询、键和值。在这里,我们使用嵌入层的输出作为所有三个输入张量。 最后,我们将注意力输出传递给一个全连接层 `self.fc`,并使用 `nn.Dropout` 在训练期间对其进行正则化。最终输出是一个形状为 `(batch_size, seq_len, hidden_size)` 的张量,其中 `seq_len` 是输入序列的长度。 这只是一个简单的例子,你可以根据需要更改网络结构和超参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值