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

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

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

エディター・開発ツール

Q&A

0回答

465閲覧

tensorflow.python.framework.errors_impl.OperatorNotAllowedInGraphError

Tyutohannpa_

総合スコア24

PyCharm

エディター・開発ツール

0グッド

0クリップ

投稿2022/11/18 06:59

前提

https://github.com/IDEALLab/bezier-gan
上記のURL「Bézier-GAN」を実行しようとしています。
その際に今回のエラーが発生しました。

実現したいこと

tensorflow.python.framework.errors_impl.OperatorNotAllowedInGraphErrorを改善したい

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

エラーメッセージ Plotting training samples ... Traceback (most recent call last): File "train_gan.py", line 60, in <module> model.train(X_train, batch_size=batch_size, train_steps=train_steps, save_interval=args.save_interval, directory=directory) File "C:\Users\phanton\Desktop\?\bezier-gan-master\bezier-gan-master\beziergan\gan.py", line 253, in train d_real, _ = self.discriminator(self.x) File "C:\Users\phanton\Desktop\?\bezier-gan-master\bezier-gan-master\beziergan\gan.py", line 166, in discriminator padding='same') File "C:\Users\phanton\Desktop\?\pycharm_env\python3.7\lib\site-packages\keras\dtensor\utils.py", line 96, in _wrap_function init_method(layer_instance, *args, **kwargs) File "C:\Users\phanton\Desktop\?\pycharm_env\python3.7\lib\site-packages\keras\layers\convolutional\conv2d.py", line 197, in __init__ **kwargs File "C:\Users\phanton\Desktop\?\pycharm_env\python3.7\lib\site-packages\keras\layers\convolutional\base_conv.py", line 128, in __init__ if filters is not None and filters <= 0: File "C:\Users\phanton\Desktop\?\pycharm_env\python3.7\lib\site-packages\tensorflow\python\framework\ops.py", line 955, in __bool__ self._disallow_bool_casting() File "C:\Users\phanton\Desktop\?\pycharm_env\python3.7\lib\site-packages\tensorflow\python\framework\ops.py", line 559, in _disallow_bool_casting "Using a symbolic `tf.Tensor` as a Python `bool`") File "C:\Users\phanton\Desktop\?\pycharm_env\python3.7\lib\site-packages\tensorflow\python\framework\ops.py", line 543, in _disallow_in_graph_mode f"{task} is not allowed in Graph execution. Use Eager execution or" tensorflow.python.framework.errors_impl.OperatorNotAllowedInGraphError: Using a symbolic `tf.Tensor` as a Python `bool` is not allowed in Graph execution. Use Eager execution or decorate this function with @tf.function.

該当のソースコード

python

1 def discriminator(self, x, reuse=tf.AUTO_REUSE, training=True): 2 3 depth = 64 4 dropout = 0.4 5 kernel_size = (4, 2) 6 7 with tf.variable_scope('Discriminator', reuse=reuse): 8 x = tf.keras.layers.Conv2D(x, (depth * 1, kernel_size), 9 strides=(2, 1), 10 padding='same') 11 x = tf.keras.layers.BatchNormalization(x, 12 momentum=0.9) # , training=training) 13 x = tf.nn.leaky_relu(x, alpha=0.2) 14 x = tf.keras.layers.Dropout(x, dropout, training=training) 15 16 x = tf.keras.layers.Conv2D(x, (depth * 2, kernel_size), 17 strides=(2, 1), 18 padding='same') 19 x = tf.keras.layers.BatchNormalization(x, 20 momentum=0.9) # , training=training) 21 x = tf.nn.leaky_relu(x, alpha=0.2) 22 x = tf.keras.layers.dropout(x, dropout, training=training) 23 24 x = tf.keras.layers.Conv2D(x, (depth * 4, kernel_size), 25 strides=(2, 1), 26 padding='same') 27 x = tf.keras.layers.BatchNormalization(x, 28 momentum=0.9) # , training=training) 29 x = tf.nn.leaky_relu(x, alpha=0.2) 30 x = tf.keras.layers.dropout(x, dropout, training=training) 31 32 x = tf.keras.layers.Conv2D(x, (depth * 8, kernel_size), 33 strides=(2, 1), 34 padding='same') 35 x = tf.keras.layers.BatchNormalization(x, 36 momentum=0.9) # , training=training) 37 x = tf.nn.leaky_relu(x, alpha=0.2) 38 x = tf.keras.layers.dropout(x, dropout, training=training) 39 40 x = tf.keras.layers.Conv2D(x, (depth * 16, kernel_size), 41 strides=(2, 1), 42 padding='same') 43 x = tf.keras.layers.BatchNormalization(x, 44 momentum=0.9) # , training=training) 45 x = tf.nn.leaky_relu(x, alpha=0.2) 46 x = tf.keras.layers.dropout(x, dropout, training=training) 47 48 x = tf.keras.layers.Conv2D(x, (depth * 32, kernel_size), 49 strides=(2, 1), 50 padding='same') 51 x = tf.keras.layers.BatchNormalization(x, 52 momentum=0.9) # , training=training) 53 x = tf.nn.leaky_relu(x, alpha=0.2) 54 x = tf.keras.layers.dropout(x, dropout, training=training) 55 56 x = tf.keras.layers.flatten(x) 57 x = tf.keras.layers.dense(x, 1024) 58 x = tf.keras.layers.BatchNormalization(x, 59 momentum=0.9) # , training=training) 60 x = tf.nn.leaky_relu(x, alpha=0.2) 61 62 d = tf.keras.layers.dense(x, 1) 63 64 q = tf.keras.layers.dense(x, 128) 65 q = tf.keras.layers.BatchNormalization(q, 66 momentum=0.9) # , training=training) 67 q = tf.nn.leaky_relu(q, alpha=0.2) 68 q_mean = tf.keras.layers.Dense(q, self.latent_dim) 69 q_logstd = tf.keras.layers.Dense(q, self.latent_dim) 70 q_logstd = tf.maximum(q_logstd, -16) 71 # Reshape to batch_size x 1 x latent_dim 72 q_mean = tf.reshape(q_mean, (-1, 1, self.latent_dim)) 73 q_logstd = tf.reshape(q_logstd, (-1, 1, self.latent_dim)) 74 q = tf.concat([q_mean, q_logstd], axis=1, 75 name='predicted_latent') # batch_size x 2 x latent_dim 76 77 return d, q

keras\dtensor\utils.py.line96

1 def _wrap_function(layer_instance, *args, **kwargs): 2 signature = inspect.signature(init_method) 3 layout_args = {} 4 # Check args like 'kernel_initializer' and pop the 'kernel_layout' if it 5 # presents. 6 for variable_name in KERAS_VARIABLE_NAMES: 7 if variable_name + "_initializer" in signature.parameters: 8 layout = kwargs.pop(variable_name + "_layout", None) 9 if layout: 10 layout_args[variable_name + "_layout"] = layout 11 12 init_method(layer_instance, *args, **kwargs) 13 14 # Inject the layout parameter after the invocation of __init__() 15 for layout_param_name, layout in layout_args.items(): 16 setattr(layer_instance, layout_param_name, layout) 17 18 # return decorated 19 return tf.__internal__.decorator.make_decorator( 20 target=init_method, decorator_func=_wrap_function 21 )

試したこと

以下のURLを参考に
https://stackoverflow.com/questions/64698542/typeerror-init-got-multiple-values-for-argument-strides
x = tf.keras.layers.Conv2D(x, (depth * 1, kernel_size),
strides=(2, 1),
padding='same')
とかっこをつけてみたのですが
tensorflow.python.framework.errors_impl.OperatorNotAllowedInGraphError: Using a symbolic tf.Tensor as a Python bool is not allowed in Graph execution. Use Eager execution or decorate this function with @tf.function.
とエラーが出てしまいました。

解決案を教えていただきたいです。

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

python3.7
tensorflow 2.10.0

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問