目标:实现无监督的数据降维,并根据降维信息实现KNN分类
内容:
1.自编码器降维
自编码器是为使神经网络学习数据原始特征,将高维数据特征用低维数据特征表示,是一种无监督的表征学习方法。
其包含编码器部分和解码器部分,编码器负责学习数据的低维嵌入特征,解码器负责将编码学习到的低维特征重新构建回原始数据特征,俩者就好像数据通信的编码和解码过程。
自编码器一般使用MSE损失函数,使重构建的特征接近于原始特征。
其相当对L2范数求平方
当然,如果用于回归数据,也可以使用交叉熵损失
深度自编码器就是在构建编码器和解码器时使用多个隐藏层,学习到更复杂的语义特征(维数更低),传统的自编码器使用全连接网络,而对于图像特征可以使用卷积神经网络进行学习。
2.构建深度自编码器
import torch
import torch.nn as nn
import torch.utils.data as Data
import torchvision
from torch.autograd import Variable
from torchvision import datasets, transforms
from torch.utils.data import DataLoader
import os
#构建自编码器的前向传播网络
#返回编码器特征和重构特征
class GeneralizedAutoEncoder(nn.Module):
"""
GeneralizedAutoEncoder;
__init__(self) :Function-GAE network;
forward(self, x):Input-input data;
Function-forwar;
"""
def __init__(self):