差分调用激活函数

问题描述 投票:0回答:2

在学习tensorflow的过程中,遇到了一个问题

有两种定义激活函数的方式。

activation = 'relu' 和 activation = tf.nn.relu

我想知道他们之间的区别

(其实我觉得其他的激活函数也包括在这个案例中)

我尝试了两种方式。

第一个是

model = tf.keras.models.Sequential([
    tf.keras.layers.Flatten(input_shape = (28, 28)),
    tf.keras.layers.Dense(128, activation = 'relu'),
    tf.keras.layers.Dense(10, activation = tf.nn.softmax)
])

第二个是

model = tf.keras.models.Sequential([
    tf.keras.layers.Flatten(input_shape = (28, 28)),
    tf.keras.layers.Dense(128, activation = tf.nn.relu),
    tf.keras.layers.Dense(10, activation = tf.nn.softmax)
])

我想他们给了我同样的结果。

他们有什么区别?

python tensorflow machine-learning deep-learning activation-function
2个回答
0
投票

他们是一样的。 Keras 这样做是为了给用户提供更清晰的用户体验,如果他们不想自定义函数的内部工作的话。

Dense层的这行代码

activations
文件中获取激活函数。在
activations
文件中,可以看到这个
relu
函数被
@keras_export
包裹起来,意思是“你可以指定为字符串”。

有些用户可能想要指定额外的参数,如

tf.keras.activations.relu(x, alpha=0.5)
,这就是为什么这两种方式都存在,你可以使用任何一种方式。


0
投票

使用

activation='relu'
activation=tf.keras.activations.relu
的简写。所以一个来自 TF 的库,另一个来自 Keras。因此,您应该使用哪个取决于您是使用 TF 来创建 NN 还是使用 keras 来创建顺序模型。更多详情可以看这篇文章.

© www.soinside.com 2019 - 2024. All rights reserved.