雑記

この記事(及びつづきの記事)は目的が未達成です。モデルのインスタンス化しかしていません。
お気付きの点がありましたらご指摘いただけますと幸いです。

💜

f:id:cookie-box:20211229152010p:plain:w70
  • Reformer の定義は以下の行ですね。同ファイルには ReformerLM や ReformerShortenLM などの亜種もありますが、Reformer が最も基本的なエンコーダ-デコーダモデルなのではないでしょうか。

    https://github.com/google/trax/blob/v1.4.1/trax/models/reformer/reformer.py#L475

    input_vocab_size を除いてデフォルト引数が設定されているので以下でインスタンス化はできますね。
  • import trax
    model = trax.models.Reformer(input_vocab_size=1000)
    

  • しかしインスタンス化しただけではどうにも……よくみると、同ディレクトリに「Reformer で機械翻訳」などといったノートブックがありますね。

    https://github.com/google/trax/blob/v1.4.1/trax/models/reformer/machine_translation.ipynb

    このノートブック内でロードしている以下の 2 ファイルがハイパーパラメータとネットワークの重みでしょうか。

    https://storage.googleapis.com/trax-ml/reformer/mt/config.gin
    https://storage.googleapis.com/trax-ml/reformer/mt/model.pkl

    であれば、これらを拝借してノートブックのように読み込めば……手元の Trax では読み込めませんね。そもそも上のノートブックに trax.git@v1.2.3 とありますものね。手元の Trax は v1.4.1 ですからね。
  • import trax
    import gin
    from tensorflow.compat.v1.io.gfile import GFile
    import pickle
    
    gin.parse_config_file('./config.gin')
    with GFile('./model.pkl', 'rb') as f:
        model_weights = pickle.load(f)['weights']
    
    ModuleNotFoundError: No module named 'trax.supervised.inputs'
      In file "./config.gin", line 3
        import trax.supervised.inputs