Keras的Softmatx激活

时间:2018-05-28 02:12:35

标签: python keras

我是Keras的新手。

我想与Keras建立一个CNN网络。

直到我想添加softmax密集层才行。

错误为TypeError: softmax() got an unexpected keyword argument 'axis'

我搜索了Keras并试图解决它:

from keras.layers import Softmax
output_layer = Dense(units=n_classes, activation=Softmax(axis=-1),  kernel_initializer='uniform')

但是,它仍会出现错误和警告:

UserWarning: Do not pass a layer instance (such as Softmax) as the activation argument of another layer. Instead, advanced activation layers should be used just like any other layer in a model.

应用softmax的正确方法是什么?

非常感谢。

cnn = Sequential()
kernelSize = (3, 3)
ip_activation = 'relu'
ip_conv_0 = Conv2D(filters=32, kernel_size=kernelSize, input_shape=im_shape, activation=ip_activation)
cnn.add(ip_conv_0)
ip_conv_0_1 = Conv2D(filters=64, kernel_size=kernelSize, activation=ip_activation)
cnn.add(ip_conv_0_1)
pool_0 = MaxPool2D(pool_size=(2, 2), strides=(2, 2), padding="same")
cnn.add(pool_0)
drop_layer_0 = Dropout(0.2)
cnn.add(drop_layer_0)
flat_layer_0 = Flatten()
cnn.add(Flatten())
h_dense_0 = Dense(units=128, activation=ip_activation, kernel_initializer='uniform')
cnn.add(h_dense_0)
h_dense_1 = Dense(units=64, activation=ip_activation, kernel_initializer='uniform')
cnn.add(h_dense_1)

op_activation = 'softmax'
output_layer = Dense(units=n_classes, activation=op_activation, kernel_initializer='uniform')
cnn.add(output_layer)#<---------error

TypeError: softmax() got an unexpected keyword argument 'axis'

1 个答案:

答案 0 :(得分:0)

层softmax和激活函数softmax之间的KERS不同。 See here.由于错误提示,您正在尝试传递需要功能的整个层。最简单的解决方案是只传递一个字符串:

output_layer = Dense(units=500, activation='softmax',  kernel_initializer='uniform')

另一种可能性是不将激活功能传递给该层,然后再应用一个激活层。