問題に対して mod/mixin を導入しようとしています。特に、ここではSpeechRecognitionProblem
. 私はこの問題を修正するつもりなので、次のことをしようとしています。
class SpeechRecognitionProblemMod(speech_recognition.SpeechRecognitionProblem):
def hparams(self, defaults, model_hparams):
SpeechRecognitionProblem.hparams(self, defaults, model_hparams)
vocab_size = self.feature_encoders(model_hparams.data_dir)['targets'].vocab_size
p = defaults
p.vocab_size['targets'] = vocab_size
def feature_encoders(self, data_dir):
# ...
したがって、これはあまり機能しません。hparams()
基本クラスから関数を呼び出し、いくつかの値を変更します。
現在、Libri Speech などのすぐに使える問題がいくつかあります。
@registry.register_problem()
class Librispeech(speech_recognition.SpeechRecognitionProblem):
# ..
ただし、変更を適用するために、次のようにしています。
@registry.register_problem()
class LibrispeechMod(SpeechRecognitionProblemMod, Librispeech):
# ..
私が間違っていなければ、これは のすべてを (同一の署名で) 上書きしLibrispeech
、代わりに の関数を呼び出す必要がありSpeechRecognitionProblemMod
ます。
このコードでモデルをトレーニングできたので、これまでのところ意図したとおりに機能していると思います。
ここに私の問題があります:
トレーニング後、モデルをシリアライズしたいと思います。これは通常機能します。しかし、それは私のモッズではなく、私は実際にその理由を知っています:
ある時点でhparams()
呼び出されます。その時点までデバッグすると、次のことがわかります。
self # {LibrispeechMod}
self.hparams # <bound method SpeechRecognitionProblem.hparams of ..>
self.feature_encoders # <bound method SpeechRecognitionProblemMod.feature_encoders of ..>
self.hparams
する必要があります<bound method SpeechRecognitionProblemMod.hparams of ..>
!何らかの理由hparams()
で のSpeechRecognitionProblem
代わりに が直接呼び出されているように思われSpeechRecognitionProblemMod
ます。ただし、これは!の正しい型であることに注意してください。feature_encoders()
問題は、これがトレーニング中に機能していることを知っているということです。モデルのグラフ ノード名が変更によって変更されるため、ハイパー パラメーター (hparams) が適切に適用されていることがわかります。
指摘しなければならない専門が1つあります。によってロードされる追加の Python モジュールであるtensor2tensor
を動的にロードできます。シリアライゼーション スクリプトでもその関数を使用します。t2t_usr_dir
import_usr_dir
if usr_dir:
logging.info('Loading user dir %s' % usr_dir)
import_usr_dir(usr_dir)
これが現時点で確認できる唯一の原因である可能性がありますが、これが問題を引き起こす理由を特定することはできません.
誰かが私が知らない何かを見たら、私がここで間違っていることのヒントを喜んで得ます.
それで、あなたが得ているエラーは何ですか?
完全を期すために、これは間違ったhparams()
メソッドが呼び出された結果です。
NotFoundError (see above for traceback): Restoring from checkpoint failed.
Key transformer/symbol_modality_256_256/softmax/weights_0 not found in checkpoint
symbol_modality_256_256
間違っている。で設定される語彙サイズはsymbol_modality_<vocab-size>_256
どこにあるはずです。<vocab-size>
SpeechRecognitionProblemMod.hparams