keras支持眾多的后端,目前包括tensorflow,mxnet,theano,作為目前最火的tensorflow高級(jí)API,在github上的活躍程度一直居高不下,筆者在上文(http://www.itdecent.cn/writer#/notebooks/11212452/notes/15821109)中配置了Ubuntu+tensorflow和cuda,cudnn.
并通過(guò)pip安裝了keras了,pip install keras但在運(yùn)行時(shí)發(fā)現(xiàn)報(bào)錯(cuò):File "/home/mohandsamro/anaconda2/lib/python2.7/site-packages/keras/backend/tensorflow_backend.py", line 2856, in conv2d
x = tf.nn.convolution(input=x,AttributeError: 'module' object has no attribute 'convolution'
經(jīng)過(guò)查閱,在stackoverlow上給出的解釋(https://stackoverflow.com/questions/42984819/tensorflow-tf-nn-convolution-error)是keras的版本不支持新的tensorflow版本。
于是將keras和tensrflow卸載,但安裝最新版本的keras時(shí)發(fā)現(xiàn)調(diào)用tensorflow庫(kù)時(shí)報(bào)錯(cuò):
ImportError: No module named _pywrap_tensorflow
將keras和tensorflow再次清理(pip uninstall ...或者conda remove ...)。
經(jīng)過(guò)查閱資料(http://www.cnblogs.com/darkknightzh/p/6592052.html)發(fā)現(xiàn)是由于在安裝各種包過(guò)程中,安裝了不同版本的protobuffer導(dǎo)致。
解決方案:通過(guò)pip install tensorflow-gpu 和pip install keras安裝通過(guò)pip uninstall protobuf卸載,通過(guò)protoc --version命令查看protobuf的版本號(hào),直到所有版本的protobuf都卸載完畢,然后通過(guò)pip install protobuf安裝最新版本的protobuf庫(kù)。調(diào)用tensorflow庫(kù),發(fā)現(xiàn)keras-gpu和tensorflow-gpu均可正常使用,完美解決。