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

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

新規登録して質問してみよう
ただいま回答率
85.46%
Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

1808閲覧

SeqGANの実装にて、ValueError: `tape` is required when a `Tensor` loss is passed. の解決策

yoshiya13

総合スコア11

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/09/05 08:08

前提・実現したいこと

SeqGAN with keras
上記のmain.ipynbに沿って進めていて、最後まで実行したいと思っています。

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

エラー文の一番最後の行の「ValueError: tape is required when a Tensor loss is passed.」で詰んでいます。

jupyterNotebook

1--------------------------------------------------------------------------- 2--------------------------------------------------------------------------- 3ValueError Traceback (most recent call last) 4<ipython-input-20-afc062f45054> in <module>() 5 1 trainer = Trainer(B, T, g_E, g_H, d_E, d_H, d_dropout, 6----> 2 g_lr, d_lr, n_sample, generate_samples) 7 85 frames 9/content/sample_data/gdrive/My Drive/Colab Notebooks/SeqGAN3.0/SeqGAN/train.py in __init__(self, B, T, g_E, g_H, d_E, d_H, d_dropout, g_lr, d_lr, n_sample, generate_samples, init_eps) 10 39 shuffle=True) 11 40 self.V = self.g_data.V 12---> 41 self.agent = Agent(sess, B, self.V, g_E, g_H, g_lr) 13 42 self.g_beta = Agent(sess, B, self.V, g_E, g_H, g_lr) 14 43 self.discriminator = Discriminator(self.V, d_E, d_H, d_dropout) 15 16/content/sample_data/gdrive/My Drive/Colab Notebooks/SeqGAN3.0/SeqGAN/rl.py in __init__(self, sess, B, V, E, H, lr) 17 28 self.lr = lr 18 29 self.eps = 0.1 19---> 30 self.generator = Generator(sess, B, V, E, H, lr) 20 31 21 32 def act(self, state, epsilon=0, deterministic=False): 22 23/content/sample_data/gdrive/My Drive/Colab Notebooks/SeqGAN3.0/SeqGAN/models.py in __init__(self, sess, B, V, E, H, lr) 24 52 self.H = H 25 53 self.lr = lr 26---> 54 self._build_gragh() 27 55 self.reset_rnn_state() 28 56 29 30/content/sample_data/gdrive/My Drive/Colab Notebooks/SeqGAN3.0/SeqGAN/models.py in _build_gragh(self) 31 79 loss = - log_prob * reward 32 80 optimizer = tf.keras.optimizers.Adam(learning_rate=self.lr) 33---> 81 minimize = optimizer.minimize(loss, var_list=None) 34 82 35 83 self.state_in = state_in 36 37/usr/local/lib/python3.7/dist-packages/keras/optimizer_v2/optimizer_v2.py in minimize(self, loss, var_list, grad_loss, name, tape) 38 519 """ 39 520 grads_and_vars = self._compute_gradients( 40--> 521 loss, var_list=var_list, grad_loss=grad_loss, tape=tape) 41 522 return self.apply_gradients(grads_and_vars, name=name) 42 523 43 44/usr/local/lib/python3.7/dist-packages/keras/optimizer_v2/optimizer_v2.py in _compute_gradients(self, loss, var_list, grad_loss, tape) 45 554 # TODO(joshl): Test that we handle weight decay in a reasonable way. 46 555 if not callable(loss) and tape is None: 47--> 556 raise ValueError("`tape` is required when a `Tensor` loss is passed.") 48 557 tape = tape if tape is not None else tf.GradientTape() 49 558 50 51ValueError: `tape` is required when a `Tensor` loss is passed.

試したこと

エラー文に表示されている、optimizer_v2.pyを少し変えたりしましたが、上手くいきませんでした。
また、あまり変えすぎると動かなくなってしまう可能性があるので、今はデフォルトの状態です。

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

現在、私が使用しているバージョン
・Python 3.7.11
・Keras 2.6.0
・tensorflow 2.6.0

Githubで使用しているバージョン
・Python 3.6.6
・Keras 2.2.2
・tensorflow 1.10.0

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jbpb0

2021/09/05 10:10

TF 1.*のコードをTF 2.*で動かすのなら、 https://qiita.com/rawHam/items/626d9b119cbefcee1452 の「3. 2系挙動を無効化する」に書かれてるように、下記の変更をすると効果あるかもしれません import tensorflow as tf ↓ 変更 import tensorflow.compat.v1 as tf tf.disable_v2_behavior() もし上記の変更を試してみるのなら、「SeqGAN」に付属のPythonコードのファイルの中で「import tensorflow as tf」を行なっているファイルは全部変更することをお勧めします
yoshiya13

2021/09/05 12:46

jbpb0さんのおかげで解決できました! 本当にありがとうございます!
guest

回答1

0

質問への追記・修正の依頼に載っているjbpb0さんの意見によって解決できました。

投稿2021/09/05 13:00

yoshiya13

総合スコア11

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問