Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

能否支持PINN + DeepOnet #1077

Open
pecanjk opened this issue Feb 13, 2025 · 7 comments
Open

能否支持PINN + DeepOnet #1077

pecanjk opened this issue Feb 13, 2025 · 7 comments

Comments

@pecanjk
Copy link

pecanjk commented Feb 13, 2025

需求描述 Feature Description

需要对函数采样功能提供支持

替代实现 Alternatives

No response

@HydrogenSulfate
Copy link
Collaborator

能否具体描述一下,函数采样功能和PINN+DeepONet分别是指什么呢?

@pecanjk
Copy link
Author

pecanjk commented Feb 13, 2025

目前实现的DeepONet是纯数据驱动的,结合上PINN之后,可以不需要数据来训练DeepONet,出自这篇文章physics-informed DeepONets

实现可以参考deepxde的poisson.1d.pideeponetantiderivative_unaligned_pideeponet

其核心就是训练DeepONet时,需要在函数空间采样,从而得到branch部分的输入
参考这里

def train_next_batch(self, batch_size=None):
        func_feats = self.func_space.random(self.num_func)
        func_vals = self.func_space.eval_batch(func_feats, self.eval_pts)
        v, x, vx = self.bc_inputs(func_feats, func_vals)
        if self.pde.pde is not None:   ##这里是基于PDE做函数采样,作为输入
            v_pde, x_pde, vx_pde = self.gen_inputs(
                func_feats, func_vals, self.pde.train_x_all
            )
            v = np.vstack((v, v_pde))
            x = np.vstack((x, x_pde))
            vx = np.vstack((vx, vx_pde))
        self.train_x = (v, x)
        self.train_aux_vars = vx
        return self.train_x, self.train_y, self.train_aux_vars

其中函数采样self.gen_inputs参考这里,self.func_space就是函数空间

@HydrogenSulfate
Copy link
Collaborator

目前实现的DeepONet是纯数据驱动的,结合上PINN之后,可以不需要数据来训练DeepONet,出自这篇文章physics-informed DeepONets

实现可以参考deepxde的poisson.1d.pideeponetantiderivative_unaligned_pideeponet

其核心就是训练DeepONet时,需要在函数空间采样,从而得到branch部分的输入 参考这里

def train_next_batch(self, batch_size=None):
func_feats = self.func_space.random(self.num_func)
func_vals = self.func_space.eval_batch(func_feats, self.eval_pts)
v, x, vx = self.bc_inputs(func_feats, func_vals)
if self.pde.pde is not None: ##这里是基于PDE做函数采样,作为输入
v_pde, x_pde, vx_pde = self.gen_inputs(
func_feats, func_vals, self.pde.train_x_all
)
v = np.vstack((v, v_pde))
x = np.vstack((x, x_pde))
vx = np.vstack((vx, vx_pde))
self.train_x = (v, x)
self.train_aux_vars = vx
return self.train_x, self.train_y, self.train_aux_vars
其中函数采样self.gen_inputs参考这里,self.func_space就是函数空间

好的,我们近期会考虑基于这篇论文增加一下函数空间采样的功能

@pecanjk
Copy link
Author

pecanjk commented Feb 19, 2025

看到examples中的示例chip_heat已经做了一些PI-DeepOnet的内容,能否在这个基础上适配到所有即可

@HydrogenSulfate
Copy link
Collaborator

看到examples中的示例chip_heat已经做了一些PI-DeepOnet的内容,能否在这个基础上适配到所有即可

"这个基础上适配到所有即可"是指什么意思呢

@pecanjk
Copy link
Author

pecanjk commented Feb 27, 2025

看到examples中的示例chip_heat已经做了一些PI-DeepOnet的内容,能否在这个基础上适配到所有即可

"这个基础上适配到所有即可"是指什么意思呢

就是目前这个example的实现是自定义的,能否添加到ppsci代码库里,方便使用

@HydrogenSulfate
Copy link
Collaborator

看到examples中的示例chip_heat已经做了一些PI-DeepOnet的内容,能否在这个基础上适配到所有即可

"这个基础上适配到所有即可"是指什么意思呢

就是目前这个example的实现是自定义的,能否添加到ppsci代码库里,方便使用

还是没太理解,ppsci.arch.ChipDeepONets这个API已经在ppsci模块下了,能具体说明一下你需要添加什么功能吗?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants