TensorFlow中的Heaviside(单位阶跃)激活

TensorFlow中的Heaviside(单位阶跃)激活,tensorflow,neural-network,perceptron,activation,Tensorflow,Neural Network,Perceptron,Activation,我需要在TensorFlow中实现一个感知器,但是,在TensorFlow中,heaviside(单位步长)激活似乎不可用。它不在tf.中,不在tf.nn.中,不在tf.keras.activations.中。我猜是因为TensorFlow是基于梯度的库,而heaviside激活没有梯度 我想知道为什么没有这个基本功能。有什么办法吗?制作感知器。TensorFlow没有heaviside(单位步长)激活函数,可能是因为TF是基于梯度的库,heaviside没有梯度。我必须使用decorator实

我需要在TensorFlow中实现一个感知器,但是,在TensorFlow中,heaviside(单位步长)激活似乎不可用。它不在
tf.
中,不在
tf.nn.
中,不在
tf.keras.activations.
中。我猜是因为TensorFlow是基于梯度的库,而heaviside激活没有梯度


我想知道为什么没有这个基本功能。有什么办法吗?制作感知器。

TensorFlow没有heaviside(单位步长)激活函数,可能是因为TF是基于梯度的库,heaviside没有梯度。我必须使用decorator实现我自己的heaviside

#Heaviside (Unit Step) function with grad
@tf.custom_gradient
def heaviside(X):
  List = [];

  for I in range(BSIZE):
    Item = tf.cond(X[I]<0, lambda: tf.constant([0], tf.float32), 
                           lambda: tf.constant([1], tf.float32));  
    List.append(Item);

  U = tf.stack(List);

  #Heaviside half-maximum formula
  #U = (tf.sign(X)+1)/2;

  #Div is differentiation intermediate value
  def grad(Div):
    return Div*1; #Heaviside has no gradient, use 1.

  return U,grad;
#带梯度的Heaviside(单位步长)函数
@自定义梯度
def heaviside(X):
列表=[];
对于范围内的I(BSIZE):

Item=tf.cond(X[I]如何实现BSIZE?@user23657任何整数值,假设你有1000个样本,将整个历元作为批处理,因此BSIZE=1000,它不会占用太多内存