gpt4 book ai didi

python - 无法在 Google Cloud 中训练我的 Tensorflow 检测器模型

转载 作者:行者123 更新时间:2023-11-28 19:05:34 28 4
gpt4 key购买 nike

我正在尝试根据 Tensorflow 样本和 this post 训练我自己的检测器模型.我确实成功地在 Macbook Pro 上进行了本地培训。问题是我没有 GPU,在 CPU 上执行它太慢了(每次迭代大约 25 秒)。

这样,我尝试在 tutorial 之后在 Google Cloud ML Engine 上运行,但我无法让它正常运行。

我的文件夹结构描述如下:

+ data
- train.record
- test.record
+ models
+ train
+ eval
+ training
- ssd_mobilenet_v1_coco

我从本地培训改为 Google Cloud 培训的步骤是:

  1. 在 Google 云存储中创建一个存储桶并复制我的本地文件夹结构和文件;
  2. 编辑我的 pipeline.config 文件并将所有路径从 Users/dev/detector/ 更改为 gcc://bucketname/
  3. 使用教程中提供的默认配置创建一个 YAML 文件;
  4. 运行

    gcloud ml-engine 作业提交训练 object_detection_date +%s\--job-dir=gs://bucketname/models/train\--packages dist/object_detection-0.1.tar.gz,slim/dist/slim-0.1.tar.gz\--module-name object_detection.train\--region us-east1\--config/Users/dev/detector/training/cloud.yml\--\--train_dir=gs://bucketname/models/train\--pipeline_config_path=gs://bucketname/data/pipeline.config

这样做,会给我以下来自 MLUnit 的错误消息:

副本 ps 0 以非零状态 1 退出。终止原因:错误。追溯(最近调用最后):文件“/usr/lib/python2.7/runpy.py”,第 162 行,在 _run_module_as_main“__main__”,fname,loader,pkg_name)文件“/usr/lib/python2.7/runpy.py", line 72, in _run_code exec code in run_globals File "/root/.local/lib/python2.7/site-packages/object_detection/train.py", line 49, in from object_detection import trainer File "/root/.local/lib/python2.7/site-packages/object_detection/trainer.py”,第 27 行,在 from object_detection.builders import preprocessor_builder File “/root/.local/lib/python2.7/site-packages/object_detection/builders/preprocessor_builder.py”,第 21 行,在 from object_detection.protos import preprocessor_pb2 文件“/root/.local/lib/python2.7/site-packages/object_detection/protos/preprocessor_pb2.py”,第 71 行,在options=None, file=DESCRIPTOR), TypeError: __new__() got an unexpected keyword argument 'file'

提前致谢。

最佳答案

查看发布的解决方案 here通过安德斯科格。它对我有用。我做了一个补丁 here .对于手动修复,请遵循以下说明:

确保你的yaml版本是1.4,例如:

trainingInput:
runtimeVersion: "1.4"
scaleTier: CUSTOM
masterType: standard_gpu
workerCount: 5
workerType: standard_gpu
parameterServerCount: 3
parameterServerType: standard

将 setup.py 更改为以下内容:

"""Setup script for object_detection."""

import logging
import subprocess
from setuptools import find_packages
from setuptools import setup
from setuptools.command.install import install

class CustomCommands(install):

def RunCustomCommand(self, command_list):
p = subprocess.Popen(
command_list,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
stdout_data, _ = p.communicate()
logging.info('Log command output: %s', stdout_data)
if p.returncode != 0:
raise RuntimeError('Command %s failed: exit code: %s' %
(command_list, p.returncode))

def run(self):
self.RunCustomCommand(['apt-get', 'update'])
self.RunCustomCommand(
['apt-get', 'install', '-y', 'python-tk'])
install.run(self)

REQUIRED_PACKAGES = ['Pillow>=1.0', 'protobuf>=3.3.0', 'Matplotlib>=2.1']

setup(
name='object_detection',
version='0.1',
install_requires=REQUIRED_PACKAGES,
include_package_data=True,
packages=[p for p in find_packages() if p.startswith('object_detection')],
description='Tensorflow Object Detection Library',
cmdclass={
'install': CustomCommands,
}
)

在 object_detection/utils/visualization_utils.py 的第 24 行(将 matplotlib.pyplot 导入为 plt 之前)添加:

import matplotlib
matplotlib.use('agg')

在object_detection/evaluator.py的第184行,改

tf.train.get_or_create_global_step()

tf.contrib.framework.get_or_create_global_step()

最后,在object_detection/builders/optimizer_builder.py的第103行,改

tf.train.get_or_create_global_step()

tf.contrib.framework.get_or_create_global_step()

希望这对您有所帮助!

关于python - 无法在 Google Cloud 中训练我的 Tensorflow 检测器模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47481893/

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