我编写了一个使用文件夹中原始文件进行训练的 Python 神经网络,使用 TensorFlow 后,我能够构建包含 Python 脚本和保存原始数据的文件夹的二进制文件,存放在 bazel-bin/…. 中。我遇到的问题是,当我运行 bazel-bin/… 来训练模型时,我的 Python 脚本无法从包含原始数据的文件夹中读取数据。
这是我的 BUILD 文件的内容,其中 raw_sound 是导入音频文件的文件夹。
py_binary( name = "sound", srcs_version = "PY3", srcs = [ "sound.py", ], deps = [ "@org_tensorflow//tensorflow:tensorflow_py", "@org_tensorflow//tensorflow/python/saved_model:builder", "@org_tensorflow//tensorflow/python/saved_model:constants", "@org_tensorflow//tensorflow/python/saved_model:loader", "@org_tensorflow//tensorflow/python/saved_model:signature_constants", "@org_tensorflow//tensorflow/python/saved_model:signature_def_utils", "@org_tensorflow//tensorflow/python/saved_model:tag_constants", "@org_tensorflow//tensorflow/python/saved_model:utils", ], data = glob(["raw_sound/**"]),)
回答:
你加载数据的路径是什么样的?
当你使用 Bazel 创建一个二进制文件时,bazel-bin/whatever/sound 实际上是一个 shell 脚本,它会切换到 bazel-bin/whatever/sound.runfiles/workspace_name/,这是一个包含你声明的所有脚本/数据依赖的符号链接树。因此,你应该能够使用路径 whatever/raw_sound/file 加载原始音频文件(因为这些是运行文件树下原始文件的路径)。