def newactivation(x):
if x>0:
return K.relu(x, alpha=0, max_value=None)
else :
return x * K.sigmoid(0.7* x)
get_custom_objects().update({'newactivation': Activation(newactivation)})
我试图在keras中使用这个激活函数用于我的模型,但是我很难找到要替换的内容
if x>0:
我得到的错误:
文件“/usr/local/lib/python3.4/dist-packages/tensorflow/python/framework/ops.py”,第614行,在bool中引发TypeError(“不允许使用tf.Tensor作为Python bool . “TypeError:不允许使用tf.Tensor作为Python bool . 如果> t不是None,则使用if:而不是t:来测试是否定义了张量,并且>使用TensorFlow操作(如tf.cond)来执行子图以>张量的值为条件 .
有人能说清楚吗?
3 回答
您可以评估张量,然后检查条件
if x > 0
没有意义,因为x > 0
是张量,而不是布尔值 .要在Keras中执行条件语句,请使用
keras.backend.switch
.比如你的
会成为
尝试类似的东西:
x不是python变量,它是一个Tensor,它将在模型运行时保存一个值 . x的值仅在评估op时才知道,因此需要通过TensorFlow(或Keras)评估条件 .