0

問題に対して 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_dirimport_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

4

1 に答える 1

0

この奇妙な動作は、私がリモート デバッグを行っていたことと、 のソース ファイルがusr_dir正しく同期されていなかったことが原因です。すべてが意図したとおりに機能しますが、ソース ファイルは一致しません。

ケースを閉じました。

于 2018-11-02T12:03:02.180 に答える