gpt4 book ai didi

python - tensorflow : "trying to mutate a frozen object",巴泽尔

转载 作者:太空宇宙 更新时间:2023-11-04 07:56:39 25 4
gpt4 key购买 nike

终端中的 MacOS high sierra,MBP 2016。

我按照这里的指示操作: https://github.com/tensorflow/models/tree/master/research/syntaxnet./configure 的所有选项都选择为默认值(并仔细检查所有 python 目录。)。在此之前,所有步骤都已干净地完成:

bazel test ...
# On Mac, run the following:
bazel test --linkopt=-headerpad_max_install_names \
dragnn/... syntaxnet/... util/utf8/...

我假设我应该运行后一行(“bazel test --linkopt”等)。但有趣的是,无论哪种方式,我都得到了相同的结果。

这会抛出大约 10 个错误,每个错误都是相同类型的“试图改变一个卡住的对象”,并得出结论,测试未运行,加载包 dragnn/protos 时出错,并且无法开始构建。

这是错误的一般形式:

syntaxnet>> bazel test --linkopt=-headerpad_max_install_names dragnn/... syntaxnet/... util/utf8/...

.

ERROR: /Users/XXX/Desktop/NLP/syntaxnet/models/research/syntaxnet/dragnn/protos/BUILD:35:1: Traceback (most recent call last): File "/Users/XXX/Desktop/NLP/syntaxnet/models/research/syntaxnet/dragnn/protos/BUILD", line 35 tf_proto_library_py(name = "data_py_pb2", srcs = ["dat..."]) File "/Users/XXX/Desktop/NLP/syntaxnet/models/research/syntaxnet/syntaxnet/syntaxnet.bzl", line 53, in tf_proto_library_py py_proto_library(name = name, srcs = srcs, srcs_versi...", <5 more arguments>) File "/private/var/tmp/_bazel_XXX/f74e5a21c3ad09aeb110d9de15110035/external/protobuf_archive/protobuf.bzl", line 374, in py_proto_library py_libs += [default_runtime] trying to mutate a frozen object ERROR: package contains errors: dragnn/protos


... [各种 'name = "...pb2"' 文件的相同错误] ...

INFO: Elapsed time: 0.709s FAILED: Build did NOT complete successfully (17 packages loaded) ERROR: Couldn't start the build. Unable to run tests

知道这是怎么回事吗?谢谢。

最佳答案

此错误表明 py_proto_library 规则实现中存在错误。

tf_proto_library_pysyntaxnet.bzl 中定义.它是 py_proto_library 的包装器,由 tf_workspace 定义宏的protobuf_archive规则。

“protobuf_archive”下载 Protobuf 3.3.0,其中包含 //:protobuf.bzl 和错误的 py_proto_library 规则实现:在第 374 行,它试图改变一个不可变对象(immutable对象) py_libs

确保您使用最新的 Bazel 版本,目前是 0.8.1。

如果问题仍然存在,那么:

  • 我建议提交错误:

    • Protobuf,修复py_proto_library规则
    • TensorFlow,更新 tf_workspace 中的 Protobuf 版本,以及
    • Syntaxnet 在 //research/syntaxnet 中更新他们的 TF 子模块引用到错误修复版本。
  • 作为一种解决方法,也许您可​​以修补 protobuf.bzl

补丁是改变这些行:

   373    if default_runtime and not default_runtime in py_libs + deps:
374 py_libs += [default_runtime]
375
376 native.py_library(
377 name=name,
378 srcs=outs+py_extra_srcs,
379 deps=py_libs+deps,
380 imports=includes,
381 **kargs)

对这些:

   373    if default_runtime and not default_runtime in py_libs + deps:
374 py_libs2 = py_libs + [default_runtime]
375 else:
376 py_libs2 = py_libs
377
378 native.py_library(
379 name=name,
380 srcs=outs+py_extra_srcs,
381 deps=py_libs2+deps,
382 imports=includes,
383 **kargs)

免责声明:这是一个“盲”修复;没试过能不能用。

关于python - tensorflow : "trying to mutate a frozen object",巴泽尔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47688252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com