Vin*_*ent 14 python keras tensorflow
目前我遇到了这个错误,有人可以帮忙解决吗?
---------------------------------------------------------------------------
OperatorNotAllowedInGraphError Traceback (most recent call last)
<ipython-input-24-0211c82920d0> in <module>
7 warnings.filterwarnings("ignore")
8 model.train(dataset_train,dataset_val, learning_rate=config.LEARNING_RATE,epochs=5,
----> 9 layers='heads')
/kaggle/working/maskrcnn/Mask_RCNN-master/mrcnn/model.py in train(self, train_dataset, val_dataset, learning_rate, epochs, layers, augmentation, custom_callbacks, no_augmentation_sources)
2355 log("Checkpoint Path: {}".format(self.checkpoint_path))
2356 self.set_trainable(layers)
-> 2357 self.compile(learning_rate, self.config.LEARNING_MOMENTUM)
2358
2359 # Work-around for Windows: Keras fails on Windows when using
/kaggle/working/maskrcnn/Mask_RCNN-master/mrcnn/model.py in compile(self, learning_rate, momentum)
2168 for name in loss_names:
2169 layer = self.keras_model.get_layer(name)
-> 2170 if layer.output in self.keras_model.losses:
2171 continue
2172 loss = (
/opt/conda/lib/python3.6/site-packages/tensorflow_core/python/framework/ops.py in __bool__(self)
763 `TypeError`.
764 """
--> 765 self._disallow_bool_casting()
766
767 def __nonzero__(self):
/opt/conda/lib/python3.6/site-packages/tensorflow_core/python/framework/ops.py in _disallow_bool_casting(self)
532 else:
533 # Default: V1-style Graph execution.
--> 534 self._disallow_in_graph_mode("using a `tf.Tensor` as a Python `bool`")
535
536 def _disallow_iteration(self):
/opt/conda/lib/python3.6/site-packages/tensorflow_core/python/framework/ops.py in _disallow_in_graph_mode(self, task)
521 raise errors.OperatorNotAllowedInGraphError(
522 "{} is not allowed in Graph execution. Use Eager execution or decorate"
--> 523 " this function with @tf.function.".format(task))
524
525 def _disallow_bool_casting(self):
OperatorNotAllowedInGraphError: using a `tf.Tensor` as a Python `bool` is not allowed in Graph execution. Use Eager execution or decorate this function with @tf.function.
Run Code Online (Sandbox Code Playgroud)
正如错误消息所解释的,您尝试将 atf.Tensor
用作 Python bool
。这通常发生在预期条件如下:
if layer.output in self.keras_model.losses:
Run Code Online (Sandbox Code Playgroud)
该部分layer.output in self.keras_model.losses
应评估为 Python 尝试用作 bool 来检查if
条件的张量。这仅在急切执行中允许。
您必须使用 转换if
构造tf.cond
,或者依靠@tf.function
为您完成工作。
没有更多的代码,很难帮助你更多......
小智 5
我也遇到了这个问题,因此我将解决这个问题的方法留给任何人。
自从 tf 升级到 2.x 以来,当您处于急切执行模式时有一个问题,如果您使用 keras API 损失和指标,您应该实例化它们以进行编译。请参阅下面的示例;
model.compile(optimizer="...",
loss=keras.losses.AnyLoss,
metrics=[keras.metrics.AnyMetric])
Run Code Online (Sandbox Code Playgroud)
上面的代码会给OperatorNotAllowedInGraphError
. 克服这样做;
my_loss = keras.losses.AnyLoss(lr, *args, **kwargs)
my_metric = keras.metrics.AnyMetric(*args, **kwargs)
model.compile(optimizer,
loss = my_loss
metrics = [my_metric_1, my_metric_2...]
Run Code Online (Sandbox Code Playgroud)
这应该够了吧
归档时间: |
|
查看次数: |
18287 次 |
最近记录: |