gpt4 book ai didi

python - 用于时间序列预测的最佳激活函数是什么

转载 作者:行者123 更新时间:2023-12-02 08:30:41 25 4
gpt4 key购买 nike

我正在使用 Keras 的 Sequential 模型和 DENSE 层类型。我编写了一个递归计算预测的函数,但预测结果相差甚远。我想知道最适合我的数据的激活函数是什么。目前我正在使用hard_sigmoid函数。输出数据值的范围为 5 到 25。输入数据的形状为 (6,1),输出数据为单个值。当我绘制预测时,它们永远不会减少。谢谢您的帮助!!

# create and fit Multilayer Perceptron model
model = Sequential();
model.add(Dense(20, input_dim=look_back, activation='hard_sigmoid'))
model.add(Dense(16, activation='hard_sigmoid'))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')
model.fit(trainX, trainY, epochs=200, batch_size=2, verbose=0)

#function to predict using predicted values
numOfPredictions = 96;

for i in range(numOfPredictions):
temp = [[origAndPredictions[i,0],origAndPredictions[i,1],origAndPredictions[i,2],origAndPredictions[i,3],origAndPredictions[i,4],origAndPredictions[i,5]]]
temp = numpy.array(temp)
temp1 = model.predict(temp)
predictions = numpy.append(predictions, temp1, axis=0)
temp2 = []
temp2 = [[origAndPredictions[i,1],origAndPredictions[i,2],origAndPredictions[i,3],origAndPredictions[i,4],origAndPredictions[i,5],predictions[i,0]]]
temp2 = numpy.array(temp2)
origAndPredictions = numpy.vstack((origAndPredictions, temp2))

enter image description here

更新:我使用这段代码来实现 swish。

from keras.backend import sigmoid
def swish1(x, beta = 1):
return (x * sigmoid(beta * x))
def swish2(x, beta = 1):
return (x * sigmoid(beta * x))
from keras.utils.generic_utils import get_custom_objects
from keras.layers import Activation
get_custom_objects().update({'swish': Activation(swish)})

model.add(Activation(custom_activation,name = "swish1"))

New plot of predictions using swish.

更新:使用此代码:

from keras.backend import sigmoid
from keras import backend as K
def swish1(x):
return (K.sigmoid(x) * x)
def swish2(x):
return (K.sigmoid(x) * x)

enter image description here

感谢大家的帮助!!

最佳答案

虽然没有最好的激活函数,但我发现 Swish特别适合解决时间序列问题。 AFAIK keras 不提供内置 Swish ,您可以使用:

from keras.utils.generic_utils import get_custom_objects
from keras import backend as K
from keras.layers import Activation

def custom_activation(x, beta = 1):
return (K.sigmoid(beta * x) * x)

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

然后在模型中使用它:

model.add(Activation(custom_activation,name = "Swish"))

关于python - 用于时间序列预测的最佳激活函数是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58761233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com