Как изобразить функции активации керас в блокноте - PullRequest
0 голосов
/ 31 октября 2018

Я хотел построить все функции активации Keras, но некоторые из них не работают. то есть linear выдает ошибку:

AttributeError: у объекта 'Series' нет атрибута 'eval'

что странно. Как я могу построить остальные мои функции активации?

points = 100
zeros = np.zeros((points,1))

df = pd.DataFrame({"activation": np.linspace(-1.2,1.2,points)})
df["softmax"] = K.eval(activations.elu(df["activation"]))
#df["linear"] = K.eval(activations.linear(df["activation"]))
df["tanh"] = K.eval(activations.tanh(df["activation"]))
df["sigmoid"] = K.eval(activations.sigmoid(df["activation"]))
df["relu"] = K.eval(activations.relu(df["activation"]))
#df["hard_sigmoid"] = K.eval(activations.hard_sigmoid(df["activation"]))
#df["exponential"] = K.eval(activations.exponential(df["activation"]))
df["softsign"] = K.eval(activations.softsign(df["activation"]))
df["softplus"] = K.eval(activations.softplus(df["activation"]))
#df["selu"] = K.eval(activations.selu(df["activation"]))
df["elu"] = K.eval(activations.elu(df["activation"]))

df.plot(x="activation", figsize=(15,15))

1 Ответ

0 голосов
/ 31 октября 2018

Это потому, что активация linear возвращает ввод без каких-либо изменений:

def linear(x):
    """Linear (i.e. identity) activation function.
    """
    return x

Поскольку вы передаете Серию Панд в качестве входных данных, будет возвращена та же Серия Панд, и поэтому вам не нужно использовать K.eval():

df["linear"] = activations.linear(df["activation"])

Что касается активации selu, вам необходимо изменить форму ввода на (n_samples, n_output):

df["selu"] = K.eval(activations.selu(df["activation"].values.reshape(-1,1)))

А что касается активации hard_sigmoid, ее ввод должен быть явно тензором, который вы можете создать, используя K.variable():

df["hard_sigmoid"] = K.eval(activations.hard_sigmoid(K.variable(df["activation"].values)))

Далее, exponential активация работает так, как вы написали, и нет необходимости в модификациях.

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