PINN-- Burges(一个例子让你入门PINN)

前言:这段代码最重要的难点就是这里,看懂了这里,你应该就入门了PINN。
重点剖析:
片段1:
def loss_func(self):
    u_pred = self.net_u(self.x_u, self.t_u)
    f_pred = self.net_f(self.x_f, self.t_f)
    loss_u = torch.mean((self.u - u_pred) ** 2)
    loss_f = torch.mean(f_pred ** 2)
    return loss_u + loss_f
问题提出:为什么这样定义损失函数呢?

解答:先看什么是x_f,t_f,两者是X_f_train的两列,而X_f_train是随机生成在x,t的范围内的数据点。

关键点1:(这是你可能疑惑,①为什么随机点也能拿来做预测 ②怎么判别预测的u结果准确呢?毕竟没有对应的u,这是就依靠u_pred = self.net_u(self.x_u, self.t_u)和loss_u ,这里的x,t都有对应u的,通过让模型学习把loss降到最小,是预测更加准确,也就有了可以和随机生成点对应的u了)
关键点2:其次为了让模型能够学习这个物理方程,引入了loss_f,让模型学习把loss_f降到最小,以至于参数能够学习到物理方程的规律,两者相加(loss_u + loss_f)也就构成了PINN。
片段2:
def net_f(self, x, t):
    u = self.net_u(x, t)
    u_t = torch.autograd.grad(u, t, grad_outputs=torch.ones_like(u), create_graph=True)[0]
    u_x = torch.autograd.grad(u, x, grad_outputs=torch.ones_like(u), create_graph=True)[0]
    u_xx = torch.autograd.grad(u_x, x, grad_outputs=torch.ones_like(u_x), create_graph=True)[0]
    f = u_t + u * u_x - self.nu * u_xx
    return f  #方程的残差
要实现固定模板格式的Excel导出,你可以使用以下步骤: 1. 定义Excel模板,包含表头和数据区域。 2. 使用JavaScript或Vue组件创建一个表格,包含要导出的数据。 3. 使用JavaScript库如SheetJS或ExcelJS将表格数据转换为Excel文件。 4. 将转换后的Excel文件与模板文件合并,保留表头和数据格式。 5. 提供下载链接或使用浏览器的文件保存对话框下载Excel文件。 下面是一个示例Vue组件,可以实现固定模板格式的Excel导出: ``` <template> <div> <button @click="exportExcel">导出Excel</button> </div> </template> <script> import XLSX from 'xlsx'; export default { data() { return { columns: [ { header: '姓名', key: 'name' }, { header: '年龄', key: 'age' }, { header: '性别', key: 'gender' }, ], data: [ { name: '张三', age: 25, gender: '男' }, { name: '李四', age: 30, gender: '女' }, { name: '王五', age: 28, gender: '男' }, ], templateFile: 'template.xlsx', }; }, methods: { exportExcel() { const workbook = XLSX.readFile(this.templateFile); const worksheet = workbook.Sheets['Sheet1']; const data = XLSX.utils.sheet_to_json(worksheet, { header: 1, defval: '' }); const headerRow = data[0]; const dataRows = this.data.map(item => this.columns.map(col => item[col.key])); XLSX.utils.sheet_add_aoa(worksheet, dataRows, { origin: 1 }); const blob = new Blob([XLSX.write(workbook, { type: 'binary' })], { type: 'application/vnd.ms-excel' }); const url = URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = 'data.xlsx'; a.click(); }, }, }; </script> ``` 这个组件使用了SheetJS库来处理Excel文件,template.xlsx是预先定义好的Excel模板文件,columns和data是要导出的表头和数据。在exportExcel方法中,首先读取模板文件,然后将数据添加到工作表中,最后生成Excel文件并提供下载链接。注意,这里使用了Blob对象和URL.createObjectURL方法来创建下载链接,可以避免将整个文件内容加载到内存中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值