Keras自定义度量值比较

2024-07-07 09:18:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为二进制分类问题编写一个自定义度量。 函数已执行,但我有两个问题: -如果测试总是评估为真 -我不能设法显示张量的值来调试它

RETURNS是全局定义的一维数组

def total_winning(y_true, y_pred):
    sess = K.get_session()
    ze_zum = 0.0
    for i in range(len(RETURNS)):
       val = K.gather(y_pred,i)
       val2 = RETURNS[i]
       val = K.print_tensor(val, message='val = ')
       #print( str(val.eval(session=sess)))
       if (K.greater(val[0], 0.5)) is not None:
           print( "Greater")
           val3 = val2
       else:
           print( "Smaller")
           val3 = 0
       ze_zum = ze_zum + val3
   return K.variable(value=ze_zum, dtype='float64' )

我想保持更复杂的测试循环

问题:

  1. “If”语句总是求值为true(显示较大值)
  2. 我无法调试代码,因为我无法访问张量“val”

我试着调试的东西

  1. 打印张量,但不显示任何内容(调试级别)
  2. 如果取消对“print/eval”行的注释,则会得到以下错误代码:

InvalidArgumentError (see above for traceback): You must feed a value for placeholder tensor 'dense_1_input' with dtype float and shape [?,30] [[{{node dense_1_input}} = Placeholderdtype=DT_FLOAT, shape=[?,30], _device="/job:localhost/replica:0/task:0/device:GPU:0"]] [[{{node metrics/total_winning/embedding_lookup/_29}} = _Recvclient_terminated=false, recv_device="/job:localhost/replica:0/task:0/device:CPU:0", send_device="/job:localhost/replica:0/task:0/device:GPU:0", send_device_incarnation=1, tensor_name="edge_33_metrics/total_winning/embedding_lookup", tensor_type=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"]]


Tags: localhostfortaskdevicejobvalreturnstotal