使用Python

时间:2017-05-31 17:20:20

标签: python tensorflow

我在Ubuntu 16.04上。我有:Python 2.7.12,Python 3.5.2,tensorflow 1.2.0-rc1,protobuf 3.3.0。

我想关注此tutorial

但我认为我的问题可以通过这个test.py来更简洁地证明:

import tensorflow as tf
regressor = tf.contrib.learn.LinearRegressor(feature_columns=[])

我无法实例化回归量。我得到了(最后完整的回溯):

  

google.protobuf.text_format.ParseError:48:12:消息类型“tensorflow.AttrValue”没有名为“5”的字段。

在本教程的[21]中也是如此。 python2和python3也是如此。如果我使用LinearClassifier而不是LinearRegressor也是如此。

对我做错的事情有任何想法吗?

  

追踪(最近一次呼叫最后一次):

     

文件“test.py”,第2行,in       regressor = tf.contrib.learn.LinearRegressor(feature_columns = [])

     

文件   “/usr/local/lib/python2.7/dist-packages/tensorflow/python/util/lazy_loader.py”   第53行,在 getattr 中       module = self._load()

     

文件   “/usr/local/lib/python2.7/dist-packages/tensorflow/python/util/lazy_loader.py”   第42行,在_load中       module = importlib.import_module(self。 name

     

文件“/usr/lib/python2.7/importlib/init.py”,第37行,在   import_module       导入(名称)

     

文件   “/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/init.py”   第35行,在       来自tensorflow.contrib导入图片

     

文件   “/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/image/init.py”   第40行,在       来自tensorflow.contrib.image.python.ops.single_image_random_dot_stereograms   import single_image_random_dot_stereograms

     

文件   “/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/image/python/ops/single_image_random_dot_stereograms.py”   第26行,在       “_single_image_random_dot_stereograms.so”))

     

文件   “/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/util/loader.py”   第55行,在load_op_library中       ret = load_library.load_op_library(path)

     

文件   “/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/load_library.py”   第84行,在load_op_library中       exec(包装器,模块。 dict

     

文件“”,第248行,

     

文件“”,第114行,在_InitOpDefLibrary

中      

文件   “/usr/local/lib/python2.7/dist-packages/google/protobuf/text_format.py”   第281行,在Merge       descriptor_pool = descriptor_pool)

     

文件   “/usr/local/lib/python2.7/dist-packages/google/protobuf/text_format.py”   第535行,在MergeLines中       return parser.MergeLines(lines,message)

     

文件   “/usr/local/lib/python2.7/dist-packages/google/protobuf/text_format.py”   第568行,在MergeLines中       self._ParseOrMerge(lines,message)

     

文件   “/usr/local/lib/python2.7/dist-packages/google/protobuf/text_format.py”   第583行,在_ParseOrMerge中       self._MergeField(tokenizer,message)

     

文件   “/usr/local/lib/python2.7/dist-packages/google/protobuf/text_format.py”   第684行,在_MergeField中       合并(标记器,消息,字段)

     

文件   “/usr/local/lib/python2.7/dist-packages/google/protobuf/text_format.py”   第773行,在_MergeMes​​sageField中       self._MergeField(tokenizer,sub_message)

     

文件   “/usr/local/lib/python2.7/dist-packages/google/protobuf/text_format.py”   第684行,在_MergeField中       合并(标记器,消息,字段)

     

文件   “/usr/local/lib/python2.7/dist-packages/google/protobuf/text_format.py”   第773行,在_MergeMes​​sageField中       self._MergeField(tokenizer,sub_message)

     

文件   “/usr/local/lib/python2.7/dist-packages/google/protobuf/text_format.py”   第684行,在_MergeField中       合并(标记器,消息,字段)

     

文件   “/usr/local/lib/python2.7/dist-packages/google/protobuf/text_format.py”   第773行,在_MergeMes​​sageField中       self._MergeField(tokenizer,sub_message)

     

文件   “/usr/local/lib/python2.7/dist-packages/google/protobuf/text_format.py”   第_ 652行,在_MergeField中       (message_descriptor.full_name,name))

3 个答案:

答案 0 :(得分:3)

解决方案

将您的数字区域设置更改为使用句号(。)而不是逗号(,)作为小数点分隔符。

说明

在Google protobuf 实现中,依赖于语言环境的函数用于将float转换为FloatToBuffer()中的字符串。

当自动提取插件库中的信息时,这就成了问题。

在您的情况下,它是序列

eye_separation: float = 2.5

emphasized _single_image_random_dot_stereograms.so

中偏移 0xa3b4

在被送到使用FloatToBuffer()的解析器之后,这就出现了:

attr {\n'
  name: "eye_separation"\n'
  type: "float"\n'
  default_value {\n'
    f: 2,5\n'
  }\n'
}\n'

然后标记器(google/protobuf/text_format.py)被默认值中的,弄糊涂,认为5是一个单独的字段。

错误报告现已发送到GitHub,因此很快就会得到修复。

答案 1 :(得分:3)

对我来说,正在运行export LC_ALL=C

//埃里克

答案 2 :(得分:-1)

它解决了它的问题:

import _locale
_locale.setlocale(_locale.LC_NUMERIC, 'en_US.UTF-8')

python3.6,freebsd11