在学习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)
])
我想他们给了我同样的结果。
他们有什么区别?
他们是一样的。 Keras 这样做是为了给用户提供更清晰的用户体验,如果他们不想自定义函数的内部工作的话。
activations
文件中获取激活函数。在activations
文件中,可以看到这个relu
函数被@keras_export
包裹起来,意思是“你可以指定为字符串”。
有些用户可能想要指定额外的参数,如
tf.keras.activations.relu(x, alpha=0.5)
,这就是为什么这两种方式都存在,你可以使用任何一种方式。
使用
activation='relu'
是 activation=tf.keras.activations.relu
的简写。所以一个来自 TF 的库,另一个来自 Keras。因此,您应该使用哪个取决于您是使用 TF 来创建 NN 还是使用 keras 来创建顺序模型。更多详情可以看这篇文章.