python - Keras 中的 Softmatx 激活
问题描述
我是 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'
解决方案
Keras 在层 softmax 和激活函数 softmax 之间有所不同。看这里。正如错误所暗示的那样,您正在尝试传递需要函数的整个层。最简单的解决方案是只传递一个字符串:
output_layer = Dense(units=500, activation='softmax', kernel_initializer='uniform')
另一种可能性是不向层传递激活函数,然后应用激活层。
推荐阅读
- node.js - NodeJS 内存泄漏
- android - 谷歌地图,带管理员 lte,android 和 IOS
- vb.net - TextChanged 和 switch 语句判断更改的文本框并重建图表数据并更新(索引超出范围)VB.Net
- java - 在java中使用'if'语句计算披萨价格
- xaml - WebView 在 Android 上显示,但在 iOS Xamarin 表单上不显示
- php - 如何使用laravel将Multipale数据存储在QR码中
- debugging - 为什么 SASM 的调试器不显示存储后更新的“结果”变量的值?
- javascript - 从 POST 请求中获取响应数据后 React JS & Axios Render
- python - 根据输入类型选择行为的最 Pythonic 方式?
- javascript - 无法将函数传递给 Angular 中的其他对象