Python 属性错误:';佩雷普利卡';对象没有属性';numpy';

Python 属性错误:';佩雷普利卡';对象没有属性';numpy';,python,python-3.x,numpy,tensorflow,text-to-speech,Python,Python 3.x,Numpy,Tensorflow,Text To Speech,我正在尝试从Tensorflow TTS repo培训fastspeech2 在单GPU训练中,它工作正常,但在多GPU训练中,它表示AttributeError:“PerReplica”对象没有属性“numpy” 我试图训练的文件是现在提供的官方fastspeech2训练python文件 我的命令: CUDA_VISIBLE_DEVICES=0,1,2,3 python examples/fastspeech2/train_fastspeech2.py \ --train-dir ./du

我正在尝试从Tensorflow TTS repo培训fastspeech2

在单GPU训练中,它工作正常,但在多GPU训练中,它表示AttributeError:“PerReplica”对象没有属性“numpy”

我试图训练的文件是现在提供的官方fastspeech2训练python文件

我的命令:

CUDA_VISIBLE_DEVICES=0,1,2,3 python examples/fastspeech2/train_fastspeech2.py \
  --train-dir ./dump/train/ \
  --dev-dir ./dump/valid/ \
  --outdir ./examples/fastspeech2/exp/train.fastspeech2.v1/ \
  --config ./examples/fastspeech2/conf/fastspeech2.v1.yaml \
  --use-norm 1 \
  --f0-stat ./dump/stats_f0.npy \
  --energy-stat ./dump/stats_energy.npy \
  --mixed_precision 1 \
  --resume ""
我得到的错误输出如下所述:

Traceback (most recent call last):
  File "examples/fastspeech2/train_fastspeech2.py", line 421, in <module>
    main()
  File "examples/fastspeech2/train_fastspeech2.py", line 413, in main
    resume=args.resume,
  File "/home/mydir/.local/lib/python3.6/site-packages/tensorflow_tts/trainers/base_trainer.py", line 852, in fit
    self.run()
  File "/home/mydir/.local/lib/python3.6/site-packages/tensorflow_tts/trainers/base_trainer.py", line 101, in run
    self._train_epoch()
  File "/home/mydir/.local/lib/python3.6/site-packages/tensorflow_tts/trainers/base_trainer.py", line 127, in _train_epoch
    self._check_eval_interval()
  File "/home/mydir/.local/lib/python3.6/site-packages/tensorflow_tts/trainers/base_trainer.py", line 164, in _check_eval_interval
    self._eval_epoch()
  File "/home/mydir/.local/lib/python3.6/site-packages/tensorflow_tts/trainers/base_trainer.py", line 747, in _eval_epoch
    self.generate_and_save_intermediate_result(batch)
  File "examples/fastspeech2/train_fastspeech2.py", line 150, in generate_and_save_intermediate_result
    utt_ids = batch["utt_ids"].numpy()
AttributeError: 'PerReplica' object has no attribute 'numpy'
回溯(最近一次呼叫最后一次):
文件“examples/fastspeech2/train_fastspeech2.py”,第421行,在
main()
文件“examples/fastspeech2/train_fastspeech2.py”,第413行,主目录
resume=args.resume,
文件“/home/mydir/.local/lib/python3.6/site packages/tensorflow\u tts/trainers/base\u trainer.py”,第852行
self.run()
文件“/home/mydir/.local/lib/python3.6/site packages/tensorflow\u tts/trainers/base\u trainer.py”,第101行,运行中
self._train_epoch()
文件“/home/mydir/.local/lib/python3.6/site packages/tensorflow\u tts/trainers/base\u trainer.py”,第127行,in\u train\u epoch
自我检查评估间隔()
文件“/home/mydir/.local/lib/python3.6/site packages/tensorflow\u tts/trainers/base\u trainer.py”,第164行,检查评估间隔
self._eval_epoch()
文件“/home/mydir/.local/lib/python3.6/site packages/tensorflow\u tts/trainers/base\u trainer.py”,第747行,in\u eval\u epoch
自行生成和保存中间结果(批处理)
文件“examples/fastspeech2/train\u fastspeech2.py”,第150行,在生成和保存中间结果中
utt_id=batch[“utt_id”].numpy()
AttributeError:“PerReplica”对象没有属性“numpy”

请提供帮助,因为我无法理解此错误出现在multi-GPU培训中的确切原因。

我目前正在处理同一个回购协议,并遇到此错误。不幸的是,我还没有一个修复程序,但在此期间,我正在使用一个变通方法。当培训尝试评估网络时,会引发此错误。根据您在文件“/examples/fastspeech2/conf/fastspeech2.v1.yaml”中设置的eval_internal_步骤,它每x次迭代执行一次。如果将此数字增加到大于train_max_steps的值,则不会调用引发错误的函数

引发此错误的函数是生成和保存中间结果(批处理),据我所知,您可以不使用它进行培训