python - Keras 中 sigmoid 激活函数的使用

标签 python tensorflow keras neural-network sigmoid

我有一个由 18260 个输入字段和 4 个输出组成的大数据集。我正在使用 Keras 和 Tensorflow 构建一个可以检测可能输出的神经网络。

但是我尝试了很多解决方案,但除非我在除第一个层之外的所有模型层中使用 sigmoid 激活函数,否则准确率不会超过 55%,如下所示:

def baseline_model(optimizer= 'adam' , init= 'random_uniform'):
# create model
model = Sequential()
model.add(Dense(40, input_dim=18260, activation="relu", kernel_initializer=init))
model.add(Dense(40, activation="sigmoid", kernel_initializer=init))
model.add(Dense(40, activation="sigmoid", kernel_initializer=init))
model.add(Dense(10, activation="sigmoid", kernel_initializer=init))
model.add(Dense(4, activation="sigmoid", kernel_initializer=init))
model.summary()
# Compile model
model.compile(loss='sparse_categorical_crossentropy', optimizer=optimizer, metrics=['accuracy'])
return model

在所有层中使用 sigmoid 进行激活是否正确?如上图所示,使用 sigmoid 时,准确率达到 99.9%。所以我想知道模型实现是否有问题。

最佳答案

sigmoid 可能有效。但我建议使用 relu 激活来激活隐藏层。问题是,你的输出层的激活是 sigmoid,但它应该是 softmax(因为你使用的是稀疏_分类_交叉熵损失)。

model.add(Dense(4, activation="softmax", kernel_initializer=init))

对评论进行讨论后进行编辑

您的输出是类标签的整数。 Sigmoid 逻辑函数输出 (0,1) 范围内的值。 softmax 的输出也在范围 (0,1) 内,但 Softmax 函数对输出添加了另一个约束:- 输出之和必须为 1。因此,softmax 的输出可以解释为输入的概率每堂课。

例如


def sigmoid(x): 
    return 1.0/(1 + np.exp(-x))

def softmax(a): 
    return np.exp(a-max(a))/np.sum(np.exp(a-max(a))) 

a = np.array([0.6, 10, -5, 4, 7])
print(sigmoid(a))
# [0.64565631, 0.9999546 , 0.00669285, 0.98201379, 0.99908895]
print(softmax(a))
# [7.86089760e-05, 9.50255231e-01, 2.90685280e-07, 2.35544722e-03,
       4.73104222e-02]
print(sum(softmax(a))
# 1.0

关于python - Keras 中 sigmoid 激活函数的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53553797/

相关文章:

tensorflow - Keras 中的 model.fit() 和 model.evaluate() 有什么区别?

python - keras.callbacks 中 Tensorboard 导入错误

Python 空闲和终端导入差异

python - KeyError : tf. 张量 'Placeholder_6:0' shape=<未知> dtype=string

python - GraphKeys.TRAINABLE_VARIABLES 与 tf.trainable_variables()

benchmarking - 如何在 tensorflow 中为自定义内核创建/运行基准测试?

keras - 在keras中的model.compile中使用metrics时,报ValueError : ('Unknown metric function' , ':f1score' )

python - 在 Python 中保持 key 安全

python - XML:如何通过属性值获取元素 - Python 2.7 和 minidom

python - 函数返回错误(python 3)