ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

数据压缩与降维利器:莫烦Python tutorials 自编码器Autoencoder实战

2026/9/19 10:42:20 拓冰建站 浏览量
数据压缩与降维利器:莫烦Python tutorials 自编码器Autoencoder实战 数据压缩与降维利器莫烦Python tutorials 自编码器Autoencoder实战【免费下载链接】tutorials机器学习相关教程项目地址: https://gitcode.com/gh_mirrors/tut/tutorials莫烦Python tutorials 是经典的机器学习教程仓库本篇带你实战其中的自编码器Autoencoder教程用 Keras 与 TensorFlow 两条路线搭建编码器 解码器网络在 MNIST 数据集上完成数据压缩、降维可视化与图像重建帮助新手快速掌握这个数据压缩与降维利器。什么是自编码器 Autoencoder自编码器Autoencoder是一种无监督学习的神经网络它的训练方式很特别网络的输出就是输入本身。它由两部分组成编码器Encoder把高维数据压成低维的潜在表示bottleneck 瓶颈层这一步就实现了数据压缩与降维解码器Decoder再把这个低维表示解压回原始维度尽量还原输入数据。当网络足够大时模型被迫学会保留数据中最本质的特征于是 Autoencoder 还能顺手胜任特征提取、噪声去除、异常检测、数据生成等任务堪称深度学习中的瑞士军刀 ️。编码器与解码器的对称结构以本仓库的 Keras 示例为例网络结构呈典型的对称沙漏形784 → 128 → 64 → 10 → 2 编码器逐层压缩 2 → 10 → 64 → 128 → 784 解码器逐层还原输入是一幅 28×28 的 MNIST 手写数字图共 784 个像素最终被压缩成仅 2 个数字——压缩比高达 392:1却能大致还原出数字轮廓。环境准备一键获取 tutorials 仓库代码在开始之前先克隆仓库拿到全部教程代码git clone https://gitcode.com/gh_mirrors/tut/tutorials本篇实战只需要 Python 3 两个经典深度学习框架任选其一即可路线代码位置依赖Keras 版推荐新手kerasTUT/9-Autoencoder_example.pykeras、numpy、matplotlibTensorFlow 版tensorflowTUT/tf21_autoencoder/full_code.pytensorflow1.x、numpy、matplotlib TensorFlow 示例使用的是 TF 1.x 的图式 API新环境建议优先跑 Keras 版本几行代码就能理解核心思想。Keras 搭建自编码器 Autoencoder 的 5 个步骤完整代码见 9-Autoencoder_example.py跟着下面五步走一遍即可。步骤1加载 MNIST 数据集与数据预处理先把像素值归一化到 0~1 再居中到 -0.5~0.5并把 28×28 图像展平成 784 维向量x_train x_train.astype(float32) / 255. - 0.5 # minmax 归一化 x_train x_train.reshape((x_train.shape[0], -1)) # 展平为 (60000, 784)归一化是数据压缩的关键一步——量纲统一后损失函数和训练都会更稳定。步骤2定义编码器 Encoder 层用四个全连接层把 784 维逐层压到 2 维激活函数用 ReLUencoded Dense(128, activationrelu)(input_img) encoded Dense(64, activationrelu)(encoded) encoded Dense(10, activationrelu)(encoded) encoder_output Dense(2)(encoded)步骤3定义解码器 Decoder 层解码器结构完全对称地反向展开输出层使用tanh把预测值约束在合理范围内decoded Dense(10, activationrelu)(encoder_output) decoded Dense(64, activationrelu)(decoded) decoded Dense(128, activationrelu)(decoded) decoded Dense(784, activationtanh)(decoded)步骤4编译模型用输入本身当标签训练Autoencoder 是无监督的——训练目标就是输入数据本身这正是它自编码名称的由来autoencoder.compile(optimizeradam, lossmse) autoencoder.fit(x_train, x_train, epochs20, batch_size256, shuffleTrue)损失函数选均方误差mse优化器选 Adam是重建类任务最稳妥的组合。步骤52D 编码散点图直观展示降维效果把测试集送进编码器得到每个数字图像的 2 维坐标按真实标签上色encoded_imgs encoder.predict(x_test) plt.scatter(encoded_imgs[:, 0], encoded_imgs[:, 1], cy_test)你会惊讶地发现仅仅 2 个数字就能把 0~9 的图像聚成 10 个簇——这就是 Autoencoder 做降维可视化的魔力 。TensorFlow 版 Autoencoder重建效果对比图怎么画TensorFlow 完整代码展示了另一条路线手写编码器与解码器函数再用tf.matmulsigmoid搭建 784 → 256 → 128 的压缩网络损失同样是最小化重建误差优化器用 Adamcost tf.reduce_mean(tf.pow(y_true - y_pred, 2)) # 重建平方误差 optimizer tf.train.AdamOptimizer(learning_rate).minimize(cost)训练 5 个 epoch 后代码用plt.subplots(2, 10, ...)把原图与重建图上下并排绘制成对比图一眼看出压缩后保留了哪些笔画特征。文件中还附赠了一份被注释的深编码器配置784 → 128 → 64 → 10 → 2把它打开就能做 2D 降维散点图与 Keras 版殊途同归。自编码器 Autoencoder 调参与常见问题 FAQQ1瓶颈维度encoding_dim怎么选维度越小压缩比越高、信息损失越大。若目标是降维可视化从 2~10 维起步若用于去噪或特征提取可以放宽到 64~128 维。Q2为什么输出层要用 tanh / sigmoid解码器输出代表重建的像素值必须落在输入数据的取值范围内本例归一化后为 -0.5~0.5 附近带饱和激活函数能天然约束这个范围。Q3训练损失不下降怎么办先检查数据是否归一化、fit的标签是否传入的是输入本身fit(x, x)再尝试调低学习率或增加 encoder 层数。Q4TF 1.x 代码在 TF 2.x 环境报错了把tf.Session、tf.placeholder替换为 TF2 API或直接改用 Keras 示例思路完全一致。扩展学习仓库内相关教程导航学完 Autoencoder可以继续按图索骥深入 tensorflowTUT/README.md 与 kerasTUT/README.md正则化防过拟合tensorflowTUT/tf17_dropout/full_code.py保存训练好的网络tensorflowTUT/tf19_saver.py卷积网络 CNNtensorflowTUT/tf18_CNN2/full_code.pyKeras 快速上手kerasTUT/4-regressor_example.py仓库全部内容地图README.md总结从数据压缩到特征提取自编码器 Autoencoder 用一个对称沙漏结构就打通了数据压缩、降维可视化、特征提取三大场景。通过本仓库 Keras 示例 的五步走你只需不到 60 行代码就能亲手压缩 MNIST再用 TensorFlow 示例 观察重建对比图就能真正理解降维为何不丢关键信息。动手跑一遍你就拥有了这把深度学习工具箱里的利器 【免费下载链接】tutorials机器学习相关教程项目地址: https://gitcode.com/gh_mirrors/tut/tutorials创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考