【问题标题】:Plotting a new activation function defined using an existing one from Keras绘制使用来自 Keras 的现有激活函数定义的新激活函数
【发布时间】:2019-05-22 23:55:33
【问题描述】:

是否可以绘制我使用 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'

我注意到了这个similar question,但我无法根据需要对其进行调整。我也尝试过使用.eval(),就像建议的here一样,但也没有成功。

【问题讨论】:

    标签: python numpy tensorflow keras activation-function


    【解决方案1】:

    我也尝试像这里建议的那样使用.eval(),但也没有成功。

    你是如何使用它的?这应该有效:

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

    【讨论】:

    • 谢谢,更简单的解决方案。我尝试将eval() 像这样:K.eval(sigmoid(x)) * x 放在函数定义中。我其实不知道为什么不起作用,错误是:NameError: name 'sigmoid' is not defined
    • @camillejr 当然应该不行,因为sigmoid是在后端模块里面定义的,所以你必须写:K.eval(K.sigmoid(x)) * x
    【解决方案2】:

    您需要一个会话来评估:

    x = np.linspace(-10, 10, 100)
    
    with tf.Session().as_default():
        y = swish(x).eval()
    
    plt.plot(x, y)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-30
      • 2020-05-29
      • 2017-10-10
      • 2018-04-15
      • 2018-09-30
      • 1970-01-01
      • 2019-01-16
      • 2017-11-03
      相关资源
      最近更新 更多