# set dataloader configITERS_PER_EPOCH=1train_dataloader_cfg={"dataset":{"name":"MatDataset","file_path":"./VIV_Training_Neta100.mat","input_keys":("t_f",),"label_keys":("eta","f"),"weight_dict":{"eta":100},},"batch_size":100,"sampler":{"name":"BatchSampler","drop_last":False,"shuffle":True,},}
# set constraintsup_constraint=ppsci.constraint.SupervisedConstraint(train_dataloader_cfg,ppsci.loss.MSELoss("mean"),{"eta":lambdaout:out["eta"],**equation["VIV"].equations},name="Sup",)
# set optimizerlr_scheduler=ppsci.optimizer.lr_scheduler.Step(EPOCHS,ITERS_PER_EPOCH,0.001,step_size=20000,gamma=0.9)()optimizer=ppsci.optimizer.Adam(lr_scheduler)((model,)+tuple(equation.values()))
# set validatorvalida_dataloader_cfg={"dataset":{"name":"MatDataset","file_path":"./VIV_Training_Neta100.mat","input_keys":("t_f",),"label_keys":("eta","f"),},"batch_size":32,"sampler":{"name":"BatchSampler","drop_last":False,"shuffle":False,},}eta_mse_validator=ppsci.validate.SupervisedValidator(valida_dataloader_cfg,ppsci.loss.MSELoss("mean"),{"eta":lambdaout:out["eta"],**equation["VIV"].equations},metric={"MSE":ppsci.metric.MSE()},name="eta_mse",)validator={eta_mse_validator.name:eta_mse_validator}
# set visualizer(optional)visu_mat=ppsci.utils.reader.load_mat_file("./VIV_Training_Neta100.mat",("t_f","eta_gt","f_gt"),alias_dict={"eta_gt":"eta","f_gt":"f"},)visualizer={"visulzie_u":ppsci.visualize.VisualizerScatter1D(visu_mat,("t_f",),{r"$\eta$":lambdad:d["eta"],# plot with latex titler"$\eta_{gt}$":lambdad:d["eta_gt"],# plot with latex titler"$f$":equation["VIV"].equations["f"],# plot with latex titler"$f_{gt}$":lambdad:d["f_gt"],# plot with latex title},num_timestamps=1,prefix="viv_pred",)}
# initialize solversolver=ppsci.solver.Solver(model,constraint,OUTPUT_DIR,optimizer,lr_scheduler,EPOCHS,ITERS_PER_EPOCH,eval_during_train=True,eval_freq=EVAL_FREQ,equation=equation,validator=validator,visualizer=visualizer,)# train modelsolver.train()# # evaluate after finished trainingsolver.eval()# visualize prediction after finished trainingsolver.visualize()# directly evaluate model from pretrained_model_path(optional)logger.init_logger("ppsci",f"{OUTPUT_DIR}/eval.log","info")solver=ppsci.solver.Solver(model,constraint,OUTPUT_DIR,equation=equation,validator=validator,visualizer=visualizer,pretrained_model_path=f"{OUTPUT_DIR}/checkpoints/latest",)solver.eval()# visualize prediction from pretrained_model_path(optional)solver.visualize()
# Copyright (c) 2023 PaddlePaddle Authors. All Rights Reserved.# Licensed under the Apache License, Version 2.0 (the "License");# you may not use this file except in compliance with the License.# You may obtain a copy of the License at# http://www.apache.org/licenses/LICENSE-2.0# Unless required by applicable law or agreed to in writing, software# distributed under the License is distributed on an "AS IS" BASIS,# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.# See the License for the specific language governing permissions and# limitations under the License.importppscifromppsci.utilsimportconfigfromppsci.utilsimportloggerif__name__=="__main__":args=config.parse_args()# set random seed for reproducibilityppsci.utils.misc.set_random_seed(42)# set output directoryOUTPUT_DIR="./output_viv"ifargs.output_dirisNoneelseargs.output_dir# initialize loggerlogger.init_logger("ppsci",f"{OUTPUT_DIR}/train.log","info")# set modelmodel=ppsci.arch.MLP(("t_f",),("eta",),5,50,"tanh",False,False)# set equationequation={"VIV":ppsci.equation.Vibration(2,-4,0)}# set dataloader configITERS_PER_EPOCH=1train_dataloader_cfg={"dataset":{"name":"MatDataset","file_path":"./VIV_Training_Neta100.mat","input_keys":("t_f",),"label_keys":("eta","f"),"weight_dict":{"eta":100},},"batch_size":100,"sampler":{"name":"BatchSampler","drop_last":False,"shuffle":True,},}# set constraintsup_constraint=ppsci.constraint.SupervisedConstraint(train_dataloader_cfg,ppsci.loss.MSELoss("mean"),{"eta":lambdaout:out["eta"],**equation["VIV"].equations},name="Sup",)# wrap constraints togetherconstraint={sup_constraint.name:sup_constraint,}# set training hyper-parametersEPOCHS=100000ifargs.epochsisNoneelseargs.epochsEVAL_FREQ=1000# set optimizerlr_scheduler=ppsci.optimizer.lr_scheduler.Step(EPOCHS,ITERS_PER_EPOCH,0.001,step_size=20000,gamma=0.9)()optimizer=ppsci.optimizer.Adam(lr_scheduler)((model,)+tuple(equation.values()))# set validatorvalida_dataloader_cfg={"dataset":{"name":"MatDataset","file_path":"./VIV_Training_Neta100.mat","input_keys":("t_f",),"label_keys":("eta","f"),},"batch_size":32,"sampler":{"name":"BatchSampler","drop_last":False,"shuffle":False,},}eta_mse_validator=ppsci.validate.SupervisedValidator(valida_dataloader_cfg,ppsci.loss.MSELoss("mean"),{"eta":lambdaout:out["eta"],**equation["VIV"].equations},metric={"MSE":ppsci.metric.MSE()},name="eta_mse",)validator={eta_mse_validator.name:eta_mse_validator}# set visualizer(optional)visu_mat=ppsci.utils.reader.load_mat_file("./VIV_Training_Neta100.mat",("t_f","eta_gt","f_gt"),alias_dict={"eta_gt":"eta","f_gt":"f"},)visualizer={"visulzie_u":ppsci.visualize.VisualizerScatter1D(visu_mat,("t_f",),{r"$\eta$":lambdad:d["eta"],# plot with latex titler"$\eta_{gt}$":lambdad:d["eta_gt"],# plot with latex titler"$f$":equation["VIV"].equations["f"],# plot with latex titler"$f_{gt}$":lambdad:d["f_gt"],# plot with latex title},num_timestamps=1,prefix="viv_pred",)}# initialize solversolver=ppsci.solver.Solver(model,constraint,OUTPUT_DIR,optimizer,lr_scheduler,EPOCHS,ITERS_PER_EPOCH,eval_during_train=True,eval_freq=EVAL_FREQ,equation=equation,validator=validator,visualizer=visualizer,)# train modelsolver.train()# # evaluate after finished trainingsolver.eval()# visualize prediction after finished trainingsolver.visualize()# directly evaluate model from pretrained_model_path(optional)logger.init_logger("ppsci",f"{OUTPUT_DIR}/eval.log","info")solver=ppsci.solver.Solver(model,constraint,OUTPUT_DIR,equation=equation,validator=validator,visualizer=visualizer,pretrained_model_path=f"{OUTPUT_DIR}/checkpoints/latest",)solver.eval()# visualize prediction from pretrained_model_path(optional)solver.visualize()