openGauss源码解析(183)

openGauss源码解析:AI技术(30)

5. 模型结构

AI Engine的模型解析、训练和预测见8.6.4章节,下面的代码展示了模型的结构。

class RnnModel():

def _build_model(self, epsilon):

model = Sequential()

model.add(LSTM(units=int(self.model_info.hidden_units), return_sequences=True, input_shape=(None, int(self.model_info.feature_length))))

model.add(LSTM(units=int(self.model_info.hidden_units), return_sequences=False))

model.add(Dense(units=int(self.model_info.hidden_units), activation='relu'))

model.add(Dense(units=int(self.model_info.hidden_units), activation='relu'))

model.add(Dense(units=int(self.model_info.label_length), activation='sigmoid'))

optimizer = keras.optimizers.Adadelta(lr=float(self.model_info.learning_rate), rho=0.95)

ratio_error = ratio_error_loss_wrapper(epsilon)

ratio_acc_2 = ratio_error_acc_wrapper(epsilon, 2)

model.compile(loss=ratio_error, metrics=[ratio_acc_2], optimizer=optimizer)

return model

AI Engine的损失函数使用ratio error(部分文献中使用qerror代称),该损失函数相较于MRE和MSE的优势在于其能够等价地惩罚高估和低估两种情况,公式为:

声明为性能预测值的无穷小值,防止分母为0的情况发生。

posted @ 2024-05-06 10:35  openGauss-bot  阅读(2)  评论(0编辑  收藏  举报