在tf.keras中使用softmax作为顺序层与将其作为密集层的激活函数有什么区别?
tf.keras.layers.Dense(10, activation=tf.nn.softmax)
和
tf.keras.layers.Softmax(10)
回答:
它们是相同的,你可以自己测试一下
# 生成数据x = np.random.uniform(0,1, (5,20)).astype('float32')# 第一种选项X = Dense(10, activation=tf.nn.softmax)A = X(x)# 第二种选项w,b = X.get_weights()B = Softmax()(tf.matmul(x,w) + b)tf.reduce_all(A == B)# <tf.Tensor: shape=(), dtype=bool, numpy=True>
还要注意,当使用tf.keras.layers.Softmax
时,不需要指定单元数,它只是一个简单的激活函数
默认情况下,softmax是在-1轴上计算的,如果你有大于2D的张量输出,并且想在其他维度上应用softmax,你可以轻松地更改这一设置,这在第二种选项中很容易实现