Построение новой функции активации, определенной с использованием существующей из Keras

Можно ли построить функцию активации, которую я определяю, используя уже существующую активацию из Keras? Я пытался сделать это просто так:

import keras
from keras import backend as K
import numpy as np
import matplotlib.pyplot as plt

# Define swish activation:
def swish(x):
    return K.sigmoid(x) * x

x = np.linspace(-10, 10, 100)

plt.plot(x, swish(x))
plt.show()

но приведенный выше код выдает ошибку: AttributeError: 'Tensor' object has no attribute 'ndim'.

Я заметил этот аналогичный вопрос, но не смог настроить его под свои нужды. Я также пытался играть с .eval(), как было предложено здесь, но тоже безуспешно.

Анализ настроения постов в Twitter с помощью Python, Tweepy и Flair
Анализ настроения постов в Twitter с помощью Python, Tweepy и Flair
Анализ настроения текстовых сообщений может быть настолько сложным или простым, насколько вы его сделаете. Как и в любом ML-проекте, вы можете выбрать...
7 лайфхаков для начинающих Python-программистов
7 лайфхаков для начинающих Python-программистов
В этой статье мы расскажем о хитростях и советах по Python, которые должны быть известны разработчику Python.
Установка Apache Cassandra на Mac OS
Установка Apache Cassandra на Mac OS
Это краткое руководство по установке Apache Cassandra.
Сертификатная программа "Кванты Python": Бэктестер ансамблевых методов на основе ООП
Сертификатная программа "Кванты Python": Бэктестер ансамблевых методов на основе ООП
В одном из недавних постов я рассказал о том, как я использую навыки количественных исследований, которые я совершенствую в рамках программы TPQ...
Создание персонального файлового хранилища
Создание персонального файлового хранилища
Вы когда-нибудь хотели поделиться с кем-то файлом, но он содержал конфиденциальную информацию? Многие думают, что электронная почта безопасна, но это...
Создание приборной панели для анализа данных на GCP - часть I
Создание приборной панели для анализа данных на GCP - часть I
Недавно я столкнулся с интересной бизнес-задачей - визуализацией сбоев в цепочке поставок лекарств, которую могут просматривать врачи и...
1
0
191
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вам нужен сеанс, чтобы оценить:

x = np.linspace(-10, 10, 100)

with tf.Session().as_default():
    y = swish(x).eval()

plt.plot(x, y)
Ответ принят как подходящий

I also tried playing with the .eval() like suggested here but also without success.

Как вы его использовали? Это должно работать:

plt.plot(x, K.eval(swish(x)))

Спасибо, еще более простое решение. Я попытался поместить eval() вот так: K.eval(sigmoid(x)) * x внутри определения функции. Я на самом деле не знаю, почему это не работает, ошибка: NameError: name 'sigmoid' is not defined.

kamilazdybal 22.05.2019 22:23

@camillejr Конечно, это не должно работать, потому что sigmoid определено внутри внутреннего модуля, поэтому вы должны написать: K.eval(K.sigmoid(x)) * x

today 23.05.2019 07:59

Другие вопросы по теме