Keras - softmax 函数的默认轴设置为轴
Keras - Default Axis for softmax function is set to Axis
我正在学习如何创建顺序模型。我有一个模型:
*model = Sequential()*
然后我继续添加池化层和卷积层(这很好)。但是在创建密集层时:
*model.add(Dense(num_classes, activation = 'softmax'))*
返回的行:
*tf.nn.softmax(x, axis=axis)*
由于未定义轴而导致错误。 Keras 和 TensorFlow 文档都显示 softmax 的默认轴是 None 或 -1。
这是 keras 的错误吗?是否有一个简单的解决方法(如果我要设置轴我不确定输入张量是什么)?
-如有必要,我可以添加其余代码,但它只包含其他层,我认为它不会有太大帮助。
我相信你的 Keras and/or TensorFlow 不是最新的,你应该更新 it/them。
这是 2017 年夏季 Keras 中的一个已知问题,已在错误报告的 this commit. See more on this comment 中修复。
另外 axis
在 TensorFlow 的 softmax()
中是 introduced as an argument on November 22, 2017 所以如果 TensorFlow 版本是 1.4.0 或更低,那也会导致这个错误。
如果您在 linked commit.
查看 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
但更重要的是,编译模型没有错误。
我正在学习如何创建顺序模型。我有一个模型:
*model = Sequential()*
然后我继续添加池化层和卷积层(这很好)。但是在创建密集层时:
*model.add(Dense(num_classes, activation = 'softmax'))*
返回的行:
*tf.nn.softmax(x, axis=axis)*
由于未定义轴而导致错误。 Keras 和 TensorFlow 文档都显示 softmax 的默认轴是 None 或 -1。
这是 keras 的错误吗?是否有一个简单的解决方法(如果我要设置轴我不确定输入张量是什么)?
-如有必要,我可以添加其余代码,但它只包含其他层,我认为它不会有太大帮助。
我相信你的 Keras and/or TensorFlow 不是最新的,你应该更新 it/them。
这是 2017 年夏季 Keras 中的一个已知问题,已在错误报告的 this commit. See more on this comment 中修复。
另外 axis
在 TensorFlow 的 softmax()
中是 introduced as an argument on November 22, 2017 所以如果 TensorFlow 版本是 1.4.0 或更低,那也会导致这个错误。
如果您在 linked commit.
查看 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
但更重要的是,编译模型没有错误。