問(wèn)題描述
在使用keras搭建網(wǎng)絡(luò)去運(yùn)行時(shí),使用了softmax:
model = Sequential()
……
model.add(Activation('softmax'))
結(jié)果在運(yùn)行的時(shí)候就報(bào)錯(cuò)了:
Traceback (most recent call last):
File "main.py", line 7, in <module>
train.train()
File "train.py", line 34, in quality_classify_model
model.add(Activation('softmax'))
File "/usr/local/app/anaconda2/envs/tensorflow/lib/python2.7/site-packages/keras/engine/sequential.py", line 181, in add
output_tensor = layer(self.outputs[0])
File "/usr/local/app/anaconda2/envs/tensorflow/lib/python2.7/site-packages/keras/engine/base_layer.py", line 457, in __call__
output = self.call(inputs, **kwargs)
File "/usr/local/app/anaconda2/envs/tensorflow/lib/python2.7/site-packages/keras/layers/core.py", line 299, in call
return self.activation(inputs)
File "/usr/local/app/anaconda2/envs/tensorflow/lib/python2.7/site-packages/keras/activations.py", line 31, in softmax
return K.softmax(x)
File "/usr/local/app/anaconda2/envs/tensorflow/lib/python2.7/site-packages/keras/backend/tensorflow_backend.py", line 3231, in softmax
return tf.nn.softmax(x, axis=axis)
TypeError: softmax() got an unexpected keyword argument 'axis'
解決方法
網(wǎng)上看到一種說(shuō)法是由于tensorflow版本過(guò)低的問(wèn)題衔彻,這里我的環(huán)境中tensorflow的版本是1.2.1,查看版本號(hào)的方法:終端命令查看TensorFlow版本號(hào)及路徑黎休。這種說(shuō)法的解決方案當(dāng)然就是升級(jí)tensorflow版本了式镐。由于比較麻煩我沒(méi)有選擇這種方法。
找到了另一種方法犯戏,可以看到報(bào)錯(cuò)信息中最后落腳在:
File "/usr/local/app/anaconda2/envs/tensorflow/lib/python2.7/site-packages/keras/backend/tensorflow_backend.py", line 3231, in softmax
return tf.nn.softmax(x, axis=axis)
所以我們進(jìn)入這個(gè)路徑(/usr/local/app/anaconda2/envs/tensorflow/lib/python2.7/site-packages/keras/backend)送火,打開tensorflow_backend.py,直接修改該文件的代碼:
去掉返回參數(shù)中的“axis”先匪,改為:
重新運(yùn)行种吸,就順利且正常了。
暫時(shí)不明確這種做法是否會(huì)帶來(lái)其他問(wèn)題呀非。