我在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=[])
我无法实例化回归量 . 我得到(最后完整的Traceback):
google.protobuf.text_format.ParseError:48:12:消息类型“tensorflow.AttrValue”没有名为“5”的字段 .
同样在本教程的[21]中 . python2和python3也是如此 . 如果我使用LinearClassifier而不是LinearRegressor,也是如此 .
关于我做错了什么的任何想法?
回溯(最近一次调用最后一次):文件“test.py”,第2行,在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 import(name)文件”/ 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(wrappers,module.dict)文件”“,第248行,在文件”“,第114行,在_InitOpDefLibrary文件中“/usr/local/lib/python2.7/dist-packages/google/protobuf/text_format.py”,第481行,在Merge descriptor_pool = descriptor_pool中)文件“/usr/local/lib/python2.7/dist-packages /google/protobuf/text_format.py“,第535行,在MergeLines中返回parser.MergeLines(行,消息)文件”/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,消息)文件“/usr/local/lib/python2.7/dist-packages/google/protobuf/text_format.py”,第684行,i n _MergeField合并(tokenizer,message,field)文件“/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))
3 回答
对我来说,运行
export LC_ALL=C
工作 .//埃里克
它解决了它的问题:
python3.6,freebsd11
解决方案
更改数字区域设置以使用 period ( . )而不是逗号(,)作为小数分隔符 .
解释
在Google protobuf实现中,依赖于语言环境的函数用于将float转换为FloatToBuffer()中的字符串 .
当自动提取插件库中的信息时,这就成了问题 .
在你的情况下,它是序列
位于
emphasized _single_image_random_dot_stereograms.so
的偏移量0xa3b4处在被送到使用
FloatToBuffer()
的解析器之后,这就出现了:然后令牌器(在
google/protobuf/text_format.py
)被默认值中的,
弄糊涂,并认为5
是一个单独的字段 .错误报告现在在GitHub,所以很快就会得到修复 .