208 Star 856 Fork 632

GVPMindSpore / mindscience

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README_CN.md 5.84 KB
一键复制 编辑 原始数据 按行查看 历史
宦晓玲 提交于 2023-09-21 11:05 . modify the error links

目录

SED_ANN

一种基于神经网络加速的快速子全域基函数方法,通过周期阵列数据集对神经网络进行训练,得到的训练完成的网络模型可以快速预估新阵列的SED基函数拓展系数,进而计算出周期阵列电磁散射感应电流分布。本方法可以大幅度提高子全域基函数方法的计算效率。

数据集

  • 数据集介绍:首先将有限周期阵列中阵列大小、阵列周期长度、单元所在阵列的位置以及入射角度作为神经网络的输入,使用SED基函数方法计算出阵列中每个单元的SED基函数拓展系数作为神经网络的输出,从而建立数据集。然后根据SED算法的物理特征将数据集划分为中心区域、边缘区域、角块区域(ic、ec、cc),最后按照8:2的比例将数据集随机划分训练集和测试集。

  • 数据格式:张量数据

环境要求

网络结构

神经网络结构如下图:

model

脚本说明

脚本及样例代码

└─SED_ANN
  ├─ckpt                              # 训练完的checkpoint
  ├─docs                              # README示意图
  ├─dataset                           # 数据集
  ├─data_merging                      # 推理数据合并
    ├──ReadSEDCoef.m                  # 合并ic、ec、cc结果
  ├─data_generate                     # 数据生成
    ├──ANN_SED_VSIE_DATA.m            # 生成训练数据和测试数据
  ├─RCS_C++                           # RCS_C++
    ├──EMLauncher.exe                 # 生成RCS结果
    ├──CONFIG_OUTPUT.yml              # 配置文件
  ├──loss.py                          # 损失&误差评估函数
  ├──run.sh                           # 推理脚本
  ├──train.py                         # 训练网络
  ├──eval.py                          # 评估网络
  ├──ma.sh
  ├──aicc_tools-0.1.7-py3-none-any.whl
  ├──README.md

数据集说明

由于整体数据量过大,我们将数据集按照平面波入射角度theta(0-180°)划分为7部分,分别对应dataset中data1-4,data1-4中TrainParas.csv文件的第一到六列分别代表阵列x、y方向周期长度、阵列x、y方向大小和平面波入射角度theta和phi。

ANN_SED_VSIE_DATA.m

脚本参数

在train.py和eval.py中可以配置训练和评估参数。

"epoch": 1500,  # 训练轮数
"print_interval": 100,  # 评估间隔
"batch_size": 8000,  # batch_size
"lr": 0.001,  # 学习率
"device_num": 1,  # 在该设备训练
"device_target": "Ascend",  # 设备名称Ascend
"checkpoint_dir": './ckpt/',  # checkpoint保存路径
"save_graphs_path": './graph_result/',  # 计算图保存路径

模型训练

网络的训练根据数据集进行划分,分为ic、ec、cc,然后再根据输出分为实部和虚部,一共需要训练六个网络模型。您可以通过train.py脚本训练SED_ANN模型,根据数据集的不同可适当修改网络,训练过程中模型参数会自动保存:

python train.py

模型推理

您可以通过run.sh脚本进行模型的推理,创建data文件夹并放入推理数据,创建model文件夹并放入保存的模型,创建output文件夹,在run.sh脚本根据六个推理数据和模型,生成对应的ic_Re、ic_Im、ec_Re、ec_Im、cc_Re、cc_Im六个输出文件:

bash run.sh

结果合并

将run.sh生成的六个文件放入output文件夹中,并修改ReadSEDCoef.m中变量path的值为output文件夹的绝对路径,然后通过matlab运行ReadSEDCoef.m文件,得到合并后的csv文件:

ReadSEDCoef.m

获取结果

修改RCS_C++文件夹下的CONFIG_OUTPUT.yml: 1、修改文件中mesh_path的值为RCS_C++中SED-ANN-T.nas文件的绝对路径。 2、修改文件中red_ANN的值为结果合并后得到的csv文件的绝对路径。 3、根据目标有限周期阵列信息,修改对应的平面波入射角theta和phi,阵列的大小Array_x和Array_y,阵列的周期长度Dx和Dy等配置信息。 双击RCS_C++下的EMLauncher.exe可执行文件,并将CONFIG_OUTPUT.yml文件的绝对路径路径复制并粘贴,回车运行,最后在SED-ANN-T_ANN_SED_T文件夹中获取RCS结果:

EMLauncher.exe --CONFIG_OUTPUT.yml

结果对比示例

根据SED_ANN模型生成的RCS结构可导入到FEKO中显示,再将FEKO自身计算的RCS结构导入可对比显示出网络的推理能力,示例结果如下图所示:

example

MindScience主页

请浏览官网主页

1
https://gitee.com/mindspore/mindscience.git
git@gitee.com:mindspore/mindscience.git
mindspore
mindscience
mindscience
r0.5

搜索帮助