首页 > 解决方案 > keras 后端中的条件函数

问题描述

您好我正在尝试在 keras 后端实现如下功能

if a <= 0.5:
   b = 0.0
elif a > 0.5
   b = 1.0

我已经实现了以下

import keras.backend as K
import tensorflow as tf
from keras.layers import Input
def sign_function(hashing):
    
    binary = Input(shape=(K.int_shape(hashing)[1],))
    hash_binary = K.switch(K.less_equal(hashing, 0.5), lambda: (binary, 0.0), lambda: (binary, 1.0))

    return hash_binary

hashingtensor

为了更具体地说,我要做的是在散列张量中大于 0.5 的每个值分配值 1.0,否则分配值 0.0。Finary 我想返回这个二进制张量。

我得到的错误如下

Traceback (most recent call last):
  File "c:/Users/spime/OneDrive/Έγγραφα/Python Scripts/Deep_Hashing_functions/main.py", line 53, in <module>
    hash_binary = Lambda(sign_function)(hash_code)
  File "C:\Users\spime\anaconda3\envs\tensorflow-gpu\lib\site-packages\keras\engine\base_layer.py", line 457, in __call__
    output = self.call(inputs, **kwargs)
  File "C:\Users\spime\anaconda3\envs\tensorflow-gpu\lib\site-packages\keras\layers\core.py", line 687, in call
    return self.function(inputs, **arguments)
  File "c:\Users\spime\OneDrive\Έγγραφα\Python Scripts\Deep_Hashing_functions\utils.py", line 9, in sign_function
    hash_binary = K.switch(K.equal(hashing, 0.5), lambda: (binary, 0.0), lambda: (binary, 1.0))
  File "C:\Users\spime\anaconda3\envs\tensorflow-gpu\lib\site-packages\keras\backend\tensorflow_backend.py", line 3067, in switch
    expr_ndim = ndim(then_expression)
  File "C:\Users\spime\anaconda3\envs\tensorflow-gpu\lib\site-packages\keras\backend\tensorflow_backend.py", line 619, in ndim
    dims = x.get_shape()._dims
AttributeError: 'tuple' object has no attribute 'get_shape'

任何帮助将非常感激!

先感谢您!

标签: pythontensorflowkeras

解决方案


推荐阅读