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
网友评论