Keras - softmax 函数的默认轴设置为轴



我正在学习如何创建顺序模型。我有一个模型:

*model  =  Sequential()*

然后我继续添加池化层和卷积层(这很好(。但是在创建密集层时:

*model.add(Dense(num_classes, activation = 'softmax'))*

返回的行:

*tf.nn.softmax(x, axis=axis)* 

这导致了错误,因为未定义轴。Keras 和 TensorFlow 文档都显示 softmax 的默认轴是 None 或 -1。

这是凯拉斯的错误吗?有没有一个简单的解决方法(如果我要设置轴,我不确定输入张量会是什么(?

-如有必要,我可以添加其余代码,但它仅由其他层组成,我认为它不会有太大帮助。

我相信你的Keras和/或TensorFlow不是最新的,你应该更新它/它们。

这是 2017 年夏天 Keras 中的一个已知问题,并在此提交中修复。有关错误报告的评论,请参阅更多信息。

此外,axis也是在 2017 年 11 月 22 日在 TensorFlow 的softmax()中作为参数引入的,因此如果 TensorFlow 版本为 1.4.0 或更低,这也会导致此错误。

究竟哪一个导致错误取决于在链接提交时查看 Keras 源代码时所处理张量的等级。

此代码适用于当前版本(在 https://colab.research.google.com 上测试(:

import keras
from keras.models import Sequential
from keras.layers import Dense, Activation
from keras.optimizers import SGD
print( keras.__version__ )
model = Sequential()
model.add( Dense(6, input_shape=(6,), activation = 'softmax' ) )
sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='categorical_crossentropy',
optimizer=sgd,
metrics=['accuracy'])

输出

2.1.6

但更重要的是,编译模型没有错误。

最新更新