質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.86%

tensorflowのTypeError

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 254

katsuton

score 1

前提・実現したいこと

tensorflowのチュートリアルseq2seqに関するものです。
全くの初心者で何が起きているのかわかりません
ご教授願います

発生している問題・エラーメッセージ

  line 114, in __init__
    softmax_loss_function=softmax_loss_function)

TypeError: model_with_buckets() got multiple values for argument 'softmax_loss_function'

該当のソースコード

 if forward_only:
      self.outputs, self.losses = tf.contrib.legacy_seq2seq.model_with_buckets(
          self.encoder_inputs, self.decoder_inputs, targets,
          self.target_weights, buckets, self.target_vocab_size,
          lambda x, y: seq2seq_f(x, y, True),
          softmax_loss_function=softmax_loss_function)

      if output_projection is not None:
        for b in xrange(len(buckets)):
          self.outputs[b] = [tf.matmul(output, output_projection[0]) +
                             output_projection[1]
                             for output in self.outputs[b]]
    else:
      self.outputs, self.losses = tf.contrib.legacy_seq2seq.model_with_buckets(
          self.encoder_inputs, self.decoder_inputs, targets,
          self.target_weights, buckets, self.target_vocab_size,
          lambda x, y: seq2seq_f(x, y, False),
          softmax_loss_function=softmax_loss_function)

試したこと

補足情報(言語/FW/ツール等のバージョンなど)

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+3

Neural Machine Translation (seq2seq) Tutorialによると

This version of the tutorial requires TensorFlow Nightly. For using the stable TensorFlow versions, please consider other branches such as tf-1.4.

とのことなので、Installationに示されている通りtf-nightlyの導入が必要だと思われます。
導入手順や注意点などの詳細は各URLを参照ください。

なお、全くの初心者であれば導入も大変かもしれませんので、まずはより簡単なチュートリアルから始めることをお勧めします。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/21 14:58

    本当ですね。
    https://github.com/tensorflow/nmt/tree/tf-1.4
    に自分でTensorflowをコンパイルしなくてよい版がありますが、Githubに載っているチュートリアルであることから、難易度の高さはそれなりに想像できます。
    最新版のTensorflowv1.4のfixが必要らしいですし。

    どのレベルの初心者かは不明ですが、チュートリアルとは言え、MNISTのエキスパートを容易にこなせるレベルを要求されても不思議ではないですね。

    キャンセル

  • 2017/12/21 15:43 編集

    ありがとうございます
    適当に嗜んでいる程度なので何ら説明を読まずしていました。

    キャンセル

  • 2017/12/21 17:29

    このチュートリアル「ディープラーニング/tensorflow」初心者のためじゃなく、ある程度の知識・経験はあるが「Neural Machine Translation?手法」は初心者のためのもの、のような感じですねぇ。
    私には難しくてさっぱりですが^-^;

    キャンセル

  • 2017/12/21 22:48

    https://smerity.com/articles/2016/google_nmt_arch.html
    RNNを利用した翻訳モデルで、現存の手法の中では最も精度が高いもののうちの1つです。
    可変長の文書を容易に生成できることが特徴です。

    キャンセル

+1

StackOverflowに、該当の質問が既出でしたが、
そのエラーは、ある関数を実行する時に、とある引数を二重に受け取ってしまった場合に生じるものです。
そちらの例だと、おそらくこの処理にて、すでにsoftmax_loss_functionを引数で指定しているのに、
更にsoftmax_loss_functionを指定しているために生じているのかと。

 tf.contrib.legacy_seq2seq.model_with_buckets(
          self.encoder_inputs, self.decoder_inputs, targets,
          self.target_weights, buckets, self.target_vocab_size,
          lambda x, y: seq2seq_f(x, y, True),
          softmax_loss_function=softmax_loss_function)

一度、tf.contrib.legacy_seq2seq.model_with_buckets の引数に
何を指定するべきか確認すると解決すると思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.86%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る