【问题标题】:how to get the output of a CNN with same dimension as the input如何获得与输入具有相同维度的 CNN 的输出
【发布时间】:2021-08-01 14:02:10
【问题描述】:

我有灰度图像,我在 x_train 和 x_test 中获得了它们的像素数组。

x_train 的大小为 (2500, 21, 512),x_test 的大小为 (500, 21, 512)。 我想做一个 CNN 来获得输出 y_train 和 (2500,21,512) 和 y_test 作为 (500,21,512) 但这是我希望网络预测的其他图像的数组。

在 MNIST 中,他们这样做,但将 y_train 和 y_test 作为值向量,然后将输出作为 (3000, 1)。除了我的图片,我怎么能这样做?

【问题讨论】:

    标签: python image neural-network conv-neural-network


    【解决方案1】:

    嗯,我不完全理解你的问题,但我会试一试。如果我误解了您的问题,请告诉我。

    您的模型采用以下输入:

    x_train: the image. 
    

    然后输出:

    x_hat = an image with the same dimensions as `x_train`
    

    从所描述的架构来看,您似乎正在构建一个卷积自动编码器。我说的对吗?

    如果是这样,您必须执行以下操作:

    1. 您需要添加一个维度为 1 的通道,以便 CNN 可以接收输入,这可以通过重塑张量来完成。卷积神经网络输入如下:(batch_size, channels, width, height)。如果不想添加通道,可以使用简单的前馈神经网络(或 MLP)。如果是这种情况,您仍然需要将输入展平为以下维度:(batch_size, pixels)。举个更具体的例子,给定 mnist 数据集,如果 batch_size 是 32,那么您的输入尺寸将为 (32, 784),因为 MNIST 图像是 28 x 28。通过展平图像,您将获得 784 的输入大小。

    2. 您可以通过跨步卷积来创建卷积自动编码器,以对编码器层中的图像进行下采样。之后,您可以采用中间表示并通过转置卷积进行上采样操作。如果您想训练一个可以实际生成样本而不是重建的模型,我建议您查找变分自动编码器和生成对抗网络。

    实现会因框架而异(例如PyTorchTensorFlow 等)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-31
      • 2022-09-23
      • 2018-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-05
      • 2014-04-25
      相关资源
      最近更新 更多