tensorflow tf.maximum(0,x)返回错误

时间:2018-10-21 17:40:28

标签: tensorflow

当尝试像预期的那样使用tf.maximum时:

loss = tf.maximum(0, basic_loss)

此错误已获得

  

-------------------------------------------------- ---------------------------- ValueError Traceback(最近的呼叫   持续)   /opt/conda/lib/python3.6/site-packages/tensorflow/python/framework/op_def_library.py   在apply_op(self,op_type_name,name,**关键字)中       第489章   -> 490 preferred_dtype = default_dtype)       491,除了TypeError作为err:

     

/opt/conda/lib/python3.6/site-packages/tensorflow/python/framework/ops.py   在internal_convert_to_tensor(value,dtype,name,as_ref,   preferred_dtype)       740如果ret为None:   -> 741 ret = conversion_func(值,dtype = dtype,name = name,as_ref = as_ref)       742

     

/opt/conda/lib/python3.6/site-packages/tensorflow/python/framework/ops.py   在_TensorTensorConversionFunction(t,dtype,name,as_ref)中       613“具有dtype%s的张量的张量转换请求dtype%s:%r”   -> 614%(dtype.name,t.dtype.name,str(t)))       615返回t

     

ValueError:Tensor转换请求Tensor具有dtype int32   dtype float32:'Tensor(“ add_13:0”,shape =(),dtype = float32)'

     

在处理上述异常期间,发生了另一个异常:

     

TypeError跟踪(最近的呼叫   最后)在()         5 tf.random_normal([3,128],均值= 1,stddev = 1,种子= 1),         6 tf.random_normal([3,128],平均值= 3,stddev = 4,种子= 1))   ----> 7损失= Triplet_loss(y_true,y_pred)         8         9 print(“ loss =” + str(loss.eval()))

     

in Triplet_loss(y_true,y_pred,alpha)        26 basic_loss = pos_dist-neg_dist + alpha        27#步骤4:取basic_loss和0.0的最大值。总结训练示例。   ---> 28损失= tf.maximum(0,basic_loss)        29 ###此处结束代码###        30

     

/opt/conda/lib/python3.6/site-packages/tensorflow/python/ops/gen_math_ops.py   最大(x,y,name)1261 A Tensor。与...具有相同的类型   x。 1262“”“   -> 1263结果= _op_def_lib.apply_op(“最大值”,x = x,y = y,name = name)1264返回结果1265

     

/opt/conda/lib/python3.6/site-packages/tensorflow/python/framework/op_def_library.py   在apply_op(self,op_type_name,name,**关键字)中       524“%s输入了参数'%s'的%s。” %       525(前缀,dtypes.as_dtype(attrs [input_arg.type_attr])。name,   -> 526从[input_arg.type_attr])推断)       527       528种= [values.dtype]

     

TypeError:“最大”操作的输入“ y”的类型为float32   匹配参数'x'的类型int32。

问题出在哪里?

1 个答案:

答案 0 :(得分:1)

The tensor flow doc没有声明maximum函数是不可交换的

仅当第一个参数的类型为Tensor时才有效,但如果其类型为int则无效。

需要使用常量参数的替换位置来调用此函数:

tf.maximum(basic_loss, 0)

代替

tf.maximum(0, basic_loss)