Ubuntu18.04下tensorflow-gpu在import时报TypeError: __new__()错误处理

Ubuntu18.04下tensorflow-gpu在import时报TypeError: new()错误处理

当系统提示更新的时候,总是手欠更新python的一些包,这下GG了,当import tensorflow as tf的的时候,报了一大堆错误(没有全部粘贴出来,只是把最后的内容粘在下面):

serialized_pb=_b('\n/tensorflow/core/framework/resource_handle.proto\x12\ntensorflow\"r\n\x1
3ResourceHandleProto\x12\x0e\n\x06\x64\x65vice\x18\x01 \x01(\t\x12\x11\n\tcontainer\x18\x02 
\x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x11\n\thash_code\x18\x04
\x01(\x04\x12\x17\n\x0fmaybe_type_name\x18\x05
\x01(\tBn\n\x18org.tensorflow.frameworkB\x0eResourceHandleP\x01Z=github.com/tensorflow/tens
orflow/tensorflow/go/core/framework\xf8\x01\x01\x62\x06proto3')
TypeError: __new__() got an unexpected keyword argument 'serialized_options'

估计这下完蛋了,搞不好要重新装Ubuntu还要重新配置python、CUDA、tensorflow-gpu…

江湖救急

赶紧google、bing了一堆方法,大体上总结出来可能出现的问题在protobuf版本上未解决问题前,我设备上,具体的版本如下(可通过pip list查看):

tensorflow-gpu                1.13.1+nv19.3
numpy                         1.16.3
protobuf                      3.9.0

其他人总结的方法大体如下,如果需要权限命令行前加 sudo

pip uninstall protobuf
pip uninstall tensorflow-gpu
pip install -U protobuf
pip install tensorflow-gpu

按照前人的经验,一顿操作猛如虎,可结果还是一样…

死马随便医
(1)首先,将protobuf卸载,降低版本到protobuf-3.7.1

尝试import tensorflow,仍然报错,根据报错文件,有这么一条内容,import google.protobuf,在终端打开python3,尝试导入google.protobuf,查看其版本号,内容如下:

Python 3.6.8 (default, Jan 14 2019, 11:02:34) 
[GCC 8.0.1 20180414 (experimental) [trunk revision 259383]] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import google.protobuf
>>> google.protobuf.__version__
'3.0.0'

好奇怪,为什么是3.0.0,明明修改成了3.7.1?(具体原因我也不知道,有大神了解的话,愿闻其详,感谢!)

(2)降低到protobus-3.0.0.b4

发现错误改变了,原来是__new()__方法报错,现在是__init()__方法报错,此时google.protobuf版本也跟着变化成了3.0.0.b4

TypeError: __init__() got an unexpected keyword argument 'serialized_options'
(3)随便修改版本了

将protobuf版本更改到3.6.0,惊喜出现了:

ValueError: numpy.ufunc has the wrong size, try recompiling. Expected 192, got 216
(4)修改numpy版本

更新到了1.16.4版本,再尝试的话,问题就解决了:

Python 3.6.8 (default, Jan 14 2019, 11:02:34) 
[GCC 8.0.1 20180414 (experimental) [trunk revision 259383]] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> import tensorflow as tf
>>> import keras
Using TensorFlow backend.
>>> np.__version__
'1.16.4'
>>> tf.__version__
'1.13.1'
>>> keras.__version__
'2.2.4' 

前后瞎折腾了1个多小时吧,各种尝试,系统了装了太多的东西,真要是重装的话,估计要个小一天,还好最后还是解决了。网络上大家给出的方法思路是正确的,只是每个人的版本都不尽相同,需要根据自己的版本去尝试,上述内容至于为什么我完全不懂,只是按照这个过程解决了问题,记录在此,仅此而已。

ps:如无必要,不要随便更新

参考

1.got an unexpected keyword argument “serialized_options”, centos 7
2.Error in python after ‘import tensorflow’: TypeError: init() got an unexpected keyword argument ‘syntax’
3.安装tensorflow遇到 TypeError: init() got an unexpected keyword argument ‘syntax’
4.(原)ubuntu中安装tensorflow

你可能感兴趣的:(经验)