【问题标题】:Implementing clipping function using Keras backend使用 Keras 后端实现裁剪功能
【发布时间】:2020-02-02 06:49:58
【问题描述】:

我想用 Keras 后端实现一个裁剪功能:

f(x) = 

x, if 0<x<1 
1, if x>1 
0, otherwise 

我可以在 numpy 中这样做:

def myclip(x): 
    import numpy as np 

    return np.int64((x>=1)==True)+np.multiply(np.int64( np.logical_and(x>0, x<1)==True),x) 

可能是

def myclipK(x): 

    from tensorflow.keras import backend as K 


    return K.int64((x>=1)==True)+K.multiply(np.int64( K.logical_and(x>0, x<1)==True),x) 

但是,我们没有像 K.int64 或 K.multiply 或 K.logical 这样的东西。

我该怎么做

【问题讨论】:

  • 为什么不使用K.clip()

标签: python-3.x tensorflow keras neural-network backend


【解决方案1】:

查看 Keras 文档,您目前无法执行此操作。以下是所有当前可用的功能:

_broadcast_normalize_batch_in_training
_fused_normalize_batch_in_training
_get_available_gpus
_get_current_tf_device
_GRAPH_LEARNING_PHASES
_GRAPH_UID_DICTS
_has_nchw_support
_is_current_explicit_device
_LOCAL_DEVICES
_MANUAL_VAR_INIT
_preprocess_conv1d_input
_preprocess_conv2d_input
_preprocess_conv3d_input
_preprocess_padding
_regular_normalize_batch_in_training
_SESSION
_TfDeviceCaptureOp
_to_tensor
abs
all
any
arange
argmax
argmin
batch_dot
batch_flatten
batch_get_value
batch_normalization
batch_set_value
bias_add
binary_crossentropy
cast
categorical_crossentropy
clear_session
clip
concatenate
constant
conv1d
conv2d
conv2d_transpose
conv3d
conv3d_transpose
cos
count_params
ctc_batch_cost
ctc_decode
ctc_label_dense_to_sparse
cumprod
cumsum
depthwise_conv2d
dot
dropout
dtype
elu
equal
eval
exp
expand_dims
eye
flatten
foldl
foldr
function
Function
gather
get_session
get_uid
get_value
get_variable_shape
gradients
greater
greater_equal
hard_sigmoid
identity
in_test_phase
in_top_k
in_train_phase
int_shape
is_keras_tensor
is_placeholder
is_sparse
is_tensor
l2_normalize
learning_phase
less
less_equal
local_conv1d
local_conv2d
log
logsumexp
manual_variable_initialization
map_fn
max
maximum
mean
min
minimum
moving_average_update
name_scope
ndim
normalize_batch_in_training
not_equal
one_hot
ones
ones_like
permute_dimensions
placeholder
pool2d
pool3d
pow
print_tensor
prod
py_all
py_any
py_slice
py_sum
random_binomial
random_normal
random_normal_variable
random_uniform
random_uniform_variable
relu
repeat
repeat_elements
reset_uids
reshape
resize_images
resize_volumes
reverse
rnn
round
separable_conv1d
separable_conv2d
set_learning_phase
set_session
set_value
shape
sigmoid
sign
sin
slice
softmax
softplus
softsign
sparse_categorical_crossentropy
spatial_2d_padding
spatial_3d_padding
sqrt
square
squeeze
stack
std
stop_gradient
sum
switch
tanh
temporal_padding
tile
to_dense
transpose
truncated_normal
update
update_add
update_sub
var
variable
zeros
zeros_like

因此,您可以推送自己的实现并在 github 中为 Keras 做出贡献。悲伤但真实。

【讨论】:

  • k.clip怎么样
  • 好的,我假设您想知道如何像在 numpy.xml 中那样“手动”创建剪辑功能。因此,我认为我的问题回答了您最初提出的问题
  • 谢谢。不用等keras,可以用tensorflow写,在keras中使用吗?
  • 是的,你可以。但问题是您要求 Keras 后端,并且可以理解的是您想要创建后端不相关的渐变剪裁。也就是说,我知道您想要创建一个适用于 theano、pytorch、tensorflow 或任何其他后端的函数。这就是 Keras 后端背后的想法。如果您的意图是仅使用 tensorflow,那么您想使用 Keras 后端就很奇怪。我希望你能明白
  • 是的,我同意。现在,鉴于我只需要 tensorflow,我们可以使用 tensorflow 来编写它吗?
【解决方案2】:

您可以使用 keras.backend 功能。

它具有clip()、sum()、greater_than等功能。

您必须使用 keras.backend 安排您的方程式,它应该可以工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-14
    • 2021-07-21
    • 1970-01-01
    • 2017-05-21
    • 2014-02-04
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多