趋近智
对自编码器进行性能的直观检查是评估其效果的重要一步。虽然均方误差(MSE)这样的定量指标可以提供一个单一数值来表示整体重建误差,但亲眼看到结果会带来一种不同且通常更直观的理解,了解自编码器的工作情况。这里将探讨可视化原始输入数据以及由自编码器重建数据的方法。
我们的基本自编码器的主要作用是尽可能准确地重建其输入。通过比较原始图像与自编码器经过压缩和解压缩后生成的图像,我们可以定性评估其性能:
我们需要两组图像:一组来自测试集的原始图像,以及一组由训练好的自编码器生成的相应重建图像。
假设你已拥有训练好的 autoencoder 模型和一组已预处理的 test_images,你可以使用模型的 predict 方法来获得重建图像:
# 假设 'autoencoder' 是你训练好的 Keras 模型
# 并且 'test_images' 是你预处理过的测试数据集
reconstructed_images = autoencoder.predict(test_images)
reconstructed_images 变量现在将包含自编码器尝试重建 test_images 的结果。
我们将使用 matplotlib 库来显示这些图像。这段代码将展示测试集中前 n 个原始图像及其对应的重建结果,分成两行:
import matplotlib.pyplot as plt
# 要显示的数字数量
n = 10
plt.figure(figsize=(20, 4))
for i in range(n):
# --- 显示原始图像 ---
ax_original = plt.subplot(2, n, i + 1)
plt.imshow(test_images[i].reshape(28, 28), cmap='gray')
ax_original.get_xaxis().set_visible(False)
ax_original.get_yaxis().set_visible(False)
if i == 0:
ax_original.set_title("原始图像")
# --- 显示重建图像 ---
ax_reconstructed = plt.subplot(2, n, i + 1 + n)
plt.imshow(reconstructed_images[i].reshape(28, 28), cmap='gray')
ax_reconstructed.get_xaxis().set_visible(False)
ax_reconstructed.get_yaxis().set_visible(False)
if i == 0:
ax_reconstructed.set_title("重建图像")
plt.show()
这段代码创建了一个包含两行子图的图形。顶行显示原始图像,底行显示重建图像。它将扁平化的图像数据重塑为 28x28 的二维数组,并以灰度显示。
运行代码时,你将看到原始手写数字和对应的重建数字。
这些视觉检查非常有价值,可以告诉你自编码器在捕获重建所需的重要特征方面学得有多好。如果重建结果很差,可能表明模型架构、训练量或学习率存在问题。如果它们非常好,则表明自编码器有效地学习了一种有用的、压缩的表示。
这个动手可视化步骤弥合了抽象的损失数值与对自编码器行为的具体理解之间的差距。它是构建和改进机器学习模型迭代过程的重要组成部分。
这部分内容有帮助吗?
Sep 5, 2025
更新以使用 Pytorch 和 Keras 3 代替 Tensorflow
© 2026 ApX Machine Learning用心打造