如何在自定义Tensorflow模型中打断循环(使用Keras)
我正在Tensorflow 2.0中构建一个机器学习应用程序。如何在自定义Tensorflow模型中打断循环(使用Keras),tensorflow,machine-learning,tensorflow2.0,Tensorflow,Machine Learning,Tensorflow2.0,我正在Tensorflow 2.0中构建一个机器学习应用程序。 我试图通过在调用函数中迭代事实时中断for循环(如果满足条件)来优化计算效率,但它返回一个错误,即: OperatorNotAllowedInGraphError:不允许将tf.Tensor用作Pythonbool:AutoGraph未转换此函数。尝试直接用u/tf.函数装饰它。 (我还尝试在call方法中添加一个tf函数 有人知道如何在自定义tensorflow模型的调用函数中打破for循环并执行逻辑吗 我的代码 def呼叫(自我
我试图通过在调用函数中迭代事实时中断for循环(如果满足条件)来优化计算效率,但它返回一个错误,即: OperatorNotAllowedInGraphError:不允许将
tf.Tensor
用作Pythonbool
:AutoGraph未转换此函数。尝试直接用u/tf.函数装饰它。(我还尝试在call方法中添加一个tf函数 有人知道如何在自定义tensorflow模型的调用函数中打破for循环并执行逻辑吗 我的代码
def呼叫(自我、输入、问题):
事件=tf.zero(形状=(self.batch\u大小,self.units))
记忆=问题
事实=self.split(self.transpose(self.cast(inputs,tf.float32),perm?(1,0,2)),self.facts_len)
对于范围内的uu(自我传递):
事实上,对于c:
c=tf.挤压(c)
g=自我注意(c、记忆、问题)
插曲=(
g*self.rnn(tf.expand_dims(c,-1),memory)[1]+(1-g)*
)
#生成下一个内存
_,memory=self.rnn(self.expand(插曲,-1),memory)
返回存储器
你应该能够在你的逻辑中使用中断
。Keras将签名应用于调用
,所以它应该可以工作,但我的猜测是你需要更改外循环:for uuu.in tf.range(self.passes)
,如果中断在内循环中,那么确保事实
也是一个张量
查看此项和FOC以了解更多详细信息。您应该能够在逻辑中使用
break
。Keras将签名应用于调用
,因此它应该可以工作,但我猜您需要更改外部循环:用于tf.范围内的(self.passs)
,如果中断位于内部循环内,请确保事实
也是张量
有关更多详细信息,请参阅本手册和focs。发布完整的车型概要。请发布您的代码,并告诉我们您到目前为止尝试了什么。例如,您知道“中断”吗命令?您使用过吗?如果没有您提供的完整信息,我们无法回答此类问题。请下次附上所有必需的信息…@neelg现在呢?我建议提供一个独立的代码来重现该问题。一般来说,创建一个可被打破的循环的一种方法是使用
tf.while\u循环
。例如,在您的情况下,tf.while\u loop
的条件可能是达到了self.passes
,或者事实发生了一些事情。发布完整的模型摘要。请发布您的代码并告诉我们您到目前为止尝试了什么。例如,您知道“中断”吗命令?您使用过吗?如果没有您提供的完整信息,我们无法回答此类问题。请下次附上所有必需的信息…@neelg现在呢?我建议提供一个独立的代码来重现该问题。一般来说,创建一个可被打破的循环的一种方法是使用tf.while\u循环
。例如,在您的情况下,tf.while\u loop
的条件可能是达到了self.passes
,或者事实发生了一些事情。