пытаясь сделать свою собственную функцию активации - PullRequest
0 голосов
/ 04 октября 2019

Я пытаюсь создать свою собственную функцию активации: 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.

1 Ответ

0 голосов
/ 04 октября 2019

Проблема в выражении if y<0. y<0 - вектор логических значений;if требует скалярного аргумента. То, что вы пытаетесь сделать, это тип фильтра;Вы не можете сделать это с помощью этого простого синтаксиса. Вместо этого вам нужно будет использовать y<0 в качестве тензора и соответствующим образом настроить свое выражение. @Marat уже предоставил вам одну возможность (хотя с одной стороны или с другой стороны отсутствует предложение «равно»).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...