|
@@ -4,7 +4,15 @@
|
|
|
# @Time :2025/2/12 14:03
|
|
|
# @Author :David
|
|
|
# @Company: shenyang JY
|
|
|
-
|
|
|
+# 固定NumPy随机种子
|
|
|
+import os
|
|
|
+os.environ['PYTHONHASHSEED'] = '42'
|
|
|
+import numpy as np
|
|
|
+np.random.seed(42)
|
|
|
+# 固定TensorFlow随机种子
|
|
|
+import tensorflow as tf
|
|
|
+tf.random.set_seed(42)
|
|
|
+from tensorflow.keras.initializers import glorot_uniform, orthogonal
|
|
|
from tensorflow.keras.layers import Input, Dense, LSTM, concatenate, Conv1D, Conv2D, MaxPooling1D, Reshape, Flatten
|
|
|
from tensorflow.keras.models import Model, load_model
|
|
|
from tensorflow.keras.callbacks import ModelCheckpoint, EarlyStopping, TensorBoard, ReduceLROnPlateau
|
|
@@ -12,11 +20,10 @@ from tensorflow.keras import optimizers, regularizers
|
|
|
from models_processing.model_tf.losses import region_loss
|
|
|
import numpy as np
|
|
|
from common.database_dml import *
|
|
|
-from models_processing.model_tf.settings import set_deterministic
|
|
|
from threading import Lock
|
|
|
import argparse
|
|
|
model_lock = Lock()
|
|
|
-set_deterministic(42)
|
|
|
+
|
|
|
|
|
|
class TSHandler(object):
|
|
|
def __init__(self, logger, args):
|
|
@@ -43,13 +50,17 @@ class TSHandler(object):
|
|
|
l2_reg = regularizers.l2(opt.Model['lambda_value_2'])
|
|
|
nwp_input = Input(shape=(opt.Model['time_step']*time_series, opt.Model['input_size']), name='nwp')
|
|
|
|
|
|
- con1 = Conv1D(filters=64, kernel_size=5, strides=1, padding='valid', activation='relu', kernel_regularizer=l2_reg)(nwp_input)
|
|
|
+ con1 = Conv1D(filters=64, kernel_size=5, strides=1, padding='valid', activation='relu', kernel_regularizer=l2_reg, kernel_initializer=glorot_uniform(seed=42))(nwp_input)
|
|
|
con1_p = MaxPooling1D(pool_size=5, strides=1, padding='valid', data_format='channels_last')(con1)
|
|
|
- nwp_lstm = LSTM(units=opt.Model['hidden_size'], return_sequences=False, kernel_regularizer=l2_reg)(con1_p)
|
|
|
+ nwp_lstm = LSTM(units=opt.Model['hidden_size'], return_sequences=False, kernel_regularizer=l2_reg, kernel_initializer=glorot_uniform(seed=43),
|
|
|
+ recurrent_initializer=orthogonal(seed=44), # LSTM特有的初始化
|
|
|
+ bias_initializer='zeros')(con1_p)
|
|
|
if lstm_type == 2:
|
|
|
- output = Dense(opt.Model['time_step'], name='cdq_output')(nwp_lstm)
|
|
|
+ output = Dense(opt.Model['time_step'], name='cdq_output', kernel_initializer=glorot_uniform(seed=45),
|
|
|
+ bias_initializer='zeros')(nwp_lstm)
|
|
|
else:
|
|
|
- output = Dense(opt.Model['time_step']*time_series, name='cdq_output')(nwp_lstm)
|
|
|
+ output = Dense(opt.Model['time_step']*time_series, name='cdq_output', kernel_initializer=glorot_uniform(seed=45),
|
|
|
+ bias_initializer='zeros')(nwp_lstm)
|
|
|
|
|
|
model = Model(nwp_input, output)
|
|
|
adam = optimizers.Adam(learning_rate=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-7, amsgrad=True)
|
|
@@ -64,13 +75,17 @@ class TSHandler(object):
|
|
|
nwp_input = Input(shape=(opt.Model['time_step'] * time_series, opt.Model['input_size']), name='nwp')
|
|
|
|
|
|
con1 = Conv1D(filters=64, kernel_size=1, strides=1, padding='valid', activation='relu',
|
|
|
- kernel_regularizer=l2_reg)(nwp_input)
|
|
|
+ kernel_regularizer=l2_reg, kernel_initializer=glorot_uniform(seed=42))(nwp_input)
|
|
|
con1_p = MaxPooling1D(pool_size=1, strides=1, padding='valid', data_format='channels_last')(con1)
|
|
|
- nwp_lstm = LSTM(units=opt.Model['hidden_size'], return_sequences=False, kernel_regularizer=l2_reg)(con1_p)
|
|
|
+ nwp_lstm = LSTM(units=opt.Model['hidden_size'], return_sequences=False, kernel_regularizer=l2_reg, kernel_initializer=glorot_uniform(seed=43),
|
|
|
+ recurrent_initializer=orthogonal(seed=44), # LSTM特有的初始化
|
|
|
+ bias_initializer='zeros')(con1_p)
|
|
|
if lstm_type == 2:
|
|
|
- output = Dense(opt.Model['time_step'], name='cdq_output')(nwp_lstm)
|
|
|
+ output = Dense(opt.Model['time_step'], name='cdq_output', kernel_initializer=glorot_uniform(seed=45),
|
|
|
+ bias_initializer='zeros')(nwp_lstm)
|
|
|
else:
|
|
|
- output = Dense(opt.Model['time_step'] * time_series, name='cdq_output')(nwp_lstm)
|
|
|
+ output = Dense(opt.Model['time_step'] * time_series, name='cdq_output', kernel_initializer=glorot_uniform(seed=45),
|
|
|
+ bias_initializer='zeros')(nwp_lstm)
|
|
|
|
|
|
model = Model(nwp_input, output)
|
|
|
adam = optimizers.Adam(learning_rate=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-7, amsgrad=True)
|