神经网络可以有多维输出节点吗?

数据挖掘 神经网络 张量流
2022-03-07 05:45:57

我试图了解 TensorFlow 的输出层有什么可能。具体来说,输出总是一个平面数组吗?

由于神经元(或 TF 中的“单元”)只有一个数字,并且只有一组输出,因此输出似乎必须具有单一维度。使用 one-hot 概率,这很容易理解。但是图像呢?

如果我的输出是一张图片,我可以让 TF 输出一个多维像素数组,例如 [[r0, g0, b0], [r1, g1, b1], ...]?如果是这样,该网络将如何构建?我将如何定义输出层的维度/形状?

我所知道的定义输出形状的唯一参数是这个,来自 tf.layers.dense,它看起来本质上是一维的:

  • units (number) 正整数,输出空间的维度。

非常感谢您提供的任何帮助!

参考:https://js.tensorflow.org/api/latest/#layers.dense
1个回答

输出层不必是一维的(不包括批量大小),但即使是,也不一定意味着您不能将其转换为维度空间。考虑一个用于重建图像的自动编码器:

  1. 在最简单的情况下,我们可以展平图像(例如 24 x 24 像素)并学习一个网络来预测 24 x 24 像素(输出一维图像)。然后可以将这些像素转换回 2D 图像(https://www.tensorflow.org/tutorials/generation/autoencoder)。所以换句话说,即使你的网络输出一维形状,也没有什么能阻止你将它重建到更高的空间。

  2. 通过使用编码网络(卷积+池化层)和解码层(转置卷积+上采样层),我们可以实现与上述相似的结果。在这种情况下,您可以直接有效地生成 2D 图像(https://www.tensorflow.org/tutorials/generation/cvae)。

您还可以查看图像分割网络,以了解如何生成更高维度的输出。