美文网首页
Ubuntu18.04下tensorflow-gpu在impor

Ubuntu18.04下tensorflow-gpu在impor

作者: Damon0626 | 来源:发表于2019-07-20 23:54 被阅读0次

    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

    相关文章

      网友评论

          本文标题:Ubuntu18.04下tensorflow-gpu在impor

          本文链接:https://www.haomeiwen.com/subject/ncbplctx.html