自编码器的实现(python)
本节主要展示了应用深度前馈、稀疏约束神经网络构建自编码器。另外卷积自编码器对图像进行去噪这一应用也非常实用,将在单独放在下篇展示。
1.导入各类包
from pathlib import Path
import numpy as np
from numpy.random import choice
from numpy.linalg import norm
import pandas as pd
import tensorflow as tf
from tensorflow.keras.layers import Input, Dense
from tensorflow.keras import regularizers
from tensorflow.keras.models import Model
from tensorflow.keras.callbacks import TensorBoard, EarlyStopping, ModelCheckpoint
from tensorflow.keras.datasets import fashion_mnist
from sklearn.preprocessing import minmax_scale
from sklearn.manifold import TSNE
from scipy.spatial.distance import pdist, cdist
import seaborn as sns
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap
from matplotlib.offsetbox import AnnotationBbox, OffsetImage
from mpl_toolkits.axes_grid1 import make_axes_locatable
2.数据准备
这里同样使用了书中的Fashion MNIST数据集。
#关键代码展示
(X_train, y_train), (X_test, y_test) = fashion_mnist.load_data()
X_train.shape, X_test.shape #访问60000个训练样本和10000个测试灰度样本,分辨率为28 x 28像素
image_size = 28 # 图像大小
input_size = image_size ** 2 # 压缩因子 = 784 / 32 = 24.5
class_dict = {
0: 'T-shirt/top',
1: 'Trouser',
2: 'Pullover',
3: 'Dress',
4: 'Coat',
5: 'Sandal',
6: 'Shirt',
7: 'Sneaker',
8: 'Bag',
9: 'Ankle boot'}
classes = list(class_dict.keys())
3.生成图像
fig, axes = plt.subplots(nrows=2, ncols=5, figsize=(14, 5))
axes =axes.flatten()
for row