Я пытаюсь создать свою собственную функцию активации: f (X) = 2 / pi * arctan (x), когда x <0, и x / 1 + abs (x), когда x> = 0. Iam пытается это сделать. в Керасе, и я использовал этот код:
from keras import backend as k
def fun8(y):
return ((2/k.pi) * k.atan2(y)) if y<0 else (y/1+k.abs(y))
, и я использовал его в моей модели:
model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3), kernel_regularizer=regularizers.l2(w_l2),
input_shape=input_shape, kernel_initializer='he_normal'))
model.add(BatchNormalization())
model.add(Activation(fun8))
model.add(Conv2D(64, (3, 3), kernel_regularizer=regularizers.l2(w_l2),
kernel_initializer='he_normal'))
model.add(BatchNormalization())
model.add(Activation(fun8))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(128, kernel_regularizer=regularizers.l2(w_l2), kernel_initializer='he_normal'))
model.add(BatchNormalization())
model.add(Activation(fun8))
model.add(Dropout(0.5))
model.add(Dense(num_classes, activation='softmax'))
model.compile(loss=keras.losses.categorical_crossentropy,
optimizer=keras.optimizers.Adam(),
metrics=['accuracy'])
model.summary()
, и это дало мне эту ошибку:
TypeError: Using a `tf.Tensor` as a Python `bool` is not allowed. Use `if t is not None:` instead of `if t:` to test if a tensor is defined, and use TensorFlow ops such as tf.cond to execute subgraphs conditioned on the value of a tensor.