【问题标题】:How do i write a custom wavelet activation function for a Wavelet Neural Network using Keras or tensorflow如何使用 Keras 或 tensorflow 为小波神经网络编写自定义小波激活函数
【发布时间】:2019-11-28 03:50:51
【问题描述】:

尝试使用 Keras/Tensorflow 构建小波神经网络。对于这个神经网络,我应该使用小波函数作为我的激活函数。

我已经尝试通过简单地调用创建自定义激活函数来做到这一点。但是,反向传播似乎存在问题

import numpy as np
import pandas as pd
import pywt
import matplotlib.pyplot as plt
import tensorflow as tf
from keras.models import Model
import keras.layers as kl
from keras.layers import Input, Dense
import keras as kr
from keras.layers import Activation
from keras import backend as K
from keras.utils.generic_utils import get_custom_objects


def custom_activation(x):
  return pywt.dwt(x, 'db1') -1

get_custom_objects().update({'custom_activation':Activation(custom_activation)})

model = Sequential()
model.add(Dense(12, input_dim=8, activation=custom_activation))
model.add(Dense(8, activation=custom_activation)
model.add(Dense(1, activation=custom_activation) 

完整运行代码时出现以下错误

SyntaxError: invalid syntax

如果我跑了

model = Sequential()
model.add(Dense(12, input_dim=8, activation=custom_activation))
model.add(Dense(8, activation=custom_activation)

我收到以下错误 SyntaxError: unexpected EOF while parsing

如果我跑了

model = Sequential() model.add(Dense(12, input_dim=8, activation=custom_activation))

我收到以下错误

TypeError: Cannot convert DType to numpy.dtype

【问题讨论】:

    标签: tensorflow keras neural-network activation-function pywavelets


    【解决方案1】:

    model.add() 是一个函数调用。必须关闭括号,否则是语法错误。

    代码示例中的这两行将导致语法错误。

    model.add(Dense(8, activation=custom_activation)
    model.add(Dense(1, activation=custom_activation)
    

    关于第二个问题:

    我收到以下错误

    TypeError: Cannot convert DType to numpy.dtype
    

    这似乎是使用不正确的参数调用了一个 numpy 函数。也许您可以尝试找出脚本中的哪一行导致了错误。

    此外,激活函数必须在 keras 后端操作中编写。或者您需要手动计算它的梯度。神经网络训练需要能够在反向传递中计算函数的梯度以调整权重。据我了解,您不能只调用任意 python 库作为激活函数;您必须使用张量操作重新实现其操作,或者如果您知道如何手动计算梯度,您可以选择在急切张量上使用 python 操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-27
      • 2018-05-28
      • 2014-01-18
      • 2017-12-08
      • 1970-01-01
      • 2023-03-05
      相关资源
      最近更新 更多