【问题标题】:Kernel Size Defining and Activation Function in KerasKeras 中的内核大小定义和激活函数
【发布时间】:2020-09-13 02:22:21
【问题描述】:

我仍在学习使用 Keras 进行适应,(对不起,如果这个问题可能很愚蠢),正如标题所说,有时我在 Keras 中构建 Conv2D 或 Conv3D 模型时发现自己这些类似的代码:

x = Conv2D(16, 3, activation='relu', padding='same')(input_img)
x = Conv2D(16, (3, 3), activation='relu', padding='same')(input_img)
x = Conv3D(16, (3, 3, 3), activation='relu', padding='same')(input_img)

我只是不确定它,但我相信它构造了相同的内核大小。还是错了?而且我经常发现在制作最后一层模型时使用“Sigmoid”或“Softmax”激活函数,例如:

x = Dense(784, activation='sigmoid')(x)
x = Dense(784, activation='softmax')(x)

什么是使用 Sigmoid/Softmax 激活函数的最佳时间?

【问题讨论】:

    标签: python keras


    【解决方案1】:

    卷积核(滤波器)取决于卷积的类型。如果您使用图像,则必须使用 2D 卷积层。另一方面,如果它是视频,3D 将是正确的。

    在内核参数中,您必须指出此过滤器将具有的大小,即每个卷积维度的大小。

    至于激活函数,您必须评估您处理的数据类型。理想情况下,如果你处理多类数据,输出层应该有一个 softmax 函数。在中间层中,sigmoid 函数运行良好,就像 ReLU 或任何其他函数一样。但始终基于您的数据。有些人比其他人更具侵略性。

    【讨论】:

    • 那么如果我有一个使用二进制标签的数据,使用 Sigmoid 函数会是最佳选择吗?
    • @JovanGeraldyCandra 不完全是,这两个函数在二进制分类中的性能几乎相同。但是,如果您要使用多层感知器,最好使用 ReLU 函数激活内部层,因为 sigmoid 函数可能会出现一些问题,就像这里解释的问题 link
    【解决方案2】:

    内核大小参数可以接收一个整数的元组值。如果它是一个整数,则将此值应用于内核的所有方面。
    因此,在前两个示例中,它是 3x3 2d 内核,在最后一个示例中,它是 3x3x3 3d 内核。

    如果您的输出中有多个类,您将使用 softmax,但预测值只能属于一个类。当您有 1 个或多个输出类并且预测值可以属于任意数量的这些类时,使用 Softmax。

    【讨论】:

    • 我明白了.. 谢谢@czr.. 所以 Softmax 可能最适合预测多类别类,那么 Sigmoid 呢?你有什么想法吗?
    猜你喜欢
    • 2020-05-29
    • 2018-08-30
    • 2019-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-10
    • 2019-09-10
    相关资源
    最近更新 更多