相关疑难解决方法(0)

keras(tensorflow 后端)使用 K.switch() 进行条件赋值

我正在尝试实现类似的东西

if np.max(subgrid) == np.min(subgrid):
    middle_middle = cur_subgrid + 1
else:
    middle_middle = cur_subgrid
Run Code Online (Sandbox Code Playgroud)

由于条件只能在运行时确定,我使用 Keras 语法如下

middle_middle = K.switch(K.max(subgrid) == K.min(subgrid), lambda: tf.add(cur_subgrid,1), lambda: cur_subgrid)
Run Code Online (Sandbox Code Playgroud)

但我收到此错误:

<ipython-input-112-0504ce070e71> in col_loop(j, gray_map, mask_A)
     56 
     57 
---> 58             middle_middle = K.switch(K.max(subgrid) == K.min(subgrid), lambda: tf.add(cur_subgrid,1), lambda: cur_subgrid)
     59 
     60             print ('ml',middle_left.shape)

/nfs/isicvlnas01/share/anaconda3/lib/python3.5/site-packages/keras/backend/tensorflow_backend.py in switch(condition, then_expression, else_expression)    2561         The selected tensor.    2562     """
-> 2563     if condition.dtype != tf.bool:    2564         condition = tf.cast(condition, 'bool')    2565     if not callable(then_expression):

AttributeError: 'bool' object has no …
Run Code Online (Sandbox Code Playgroud)

if-statement backend switch-statement keras tensorflow

2
推荐指数
1
解决办法
3332
查看次数