python - 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
hashing
是tensor
为了更具体地说,我要做的是在散列张量中大于 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'
任何帮助将非常感激!
先感谢您!