使用 Tensorflow 2.x 构建神经网络时应该使用哪一层?

Which layer should I use when I build a Neural Network with Tensorflow 2.x?

我目前正在学习 TensorFlow 2.0 和 Keras。我知道激活函数用于根据数学函数计算神经网络每一层的输出。但是,在搜索层时,我找不到适合深度学习初学者的 syntheticeasy-to-read 信息。

有keras文档,但我想综合了解一下:

根据您要解决的问题,您可以使用不同的激活函数和损失函数。

  1. 回归问题:您想预测建筑物的价格。你有 N 个特征。当然,建筑物的价格是实数,因此您需要将 mean_squared_error 作为损失函数,并为最后一个节点设置 linear 激活函数。在这种情况下,你可以有几个 Dense() 层激活 relu,而你的最后一层是 Dense(1,activation='linear')。 在 Dense() 层之间,您可以添加 Dropout() 以减轻过度拟合效应(如果存在)。
  2. 分类问题:你想检测一个人是否患有糖尿病,同时考虑几个factors/features。在这种情况下,您可以再次使用堆叠 Dense() 层,但最后一层将是 Dense(1,activation='sigmoid'),因为您要检测患者是否患有糖尿病。这种情况下的损失函数是'binary_crossentropy'。在 Dense() 层之间,您可以添加 Dropout() 以减轻过度拟合效应(如果存在)。
  3. 图像处理问题:这里肯定有一堆 [Conv2D(),MaxPool2D(),Dropout()]。 MaxPooling2D 是图像处理和一些自然语言处理的典型操作(这里不展开)。有时,在卷积神经网络架构中,会使用 Flatten() 层。其目的是将特征图的维数降低为一维向量,其维数等于整个特征图深度内的元素总数。例如,如果您有一个 [28,28] 的矩阵,将其展平会将其缩小为 (1,784),其中 784=28*28.

虽然这个问题很宽泛,也许有些人会投票决定关闭它,但我还是试着对您提出的问题做一个简短的概述。我建议您开始学习神经网络背后的基础知识,然后深入研究使用框架,例如 TensorFlow 或 PyTorch。