我在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行,在_MergeMessageField中 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行,在_MergeMessageField中 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行,在_MergeMessageField中 self._MergeField(tokenizer,sub_message)
文件 “/usr/local/lib/python2.7/dist-packages/google/protobuf/text_format.py” 第_ 652行,在_MergeField中 (message_descriptor.full_name,name))
答案 0 :(得分:3)
将您的数字区域设置更改为使用句号(。)而不是逗号(,)作为小数点分隔符。
在Google protobuf 实现中,依赖于语言环境的函数用于将float转换为FloatToBuffer()
中的字符串。
当自动提取插件库中的信息时,这就成了问题。
在您的情况下,它是序列
eye_separation: float = 2.5
在emphasized _single_image_random_dot_stereograms.so
在被送到使用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