-
通过C#完成窗体开发,掌握定义类及常用控件(CheckListbox、Listbox、Chart、DataGridView)的使用及数据绑定。
-
基于Python及人工神经网络(ANN)建立加速度反应谱曲线预测模型,通过输入影响系数最大值、特征周期及阻尼比预测规范反应谱曲线。
图1 学习任务一:C#窗体示例
-
生成数据集
-
搭建神经网络
-
# 搭建神经网络
-
model = torch.nn.Sequential(
-
torch.nn.Linear(1*4,500),
-
torch.nn.ReLU(),
-
torch.nn.Linear(500,500),
-
torch.nn.ReLU(),
-
torch.nn.Linear(500,500),
-
torch.nn.ReLU(),
-
torch.nn.Linear(500,1)
-
)
-
-
# 损失函数和优化器
-
loss_fuc = nn.MSELoss()
-
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
-
-
# 数据集和下载器
-
train_dataset =Data.TensorDataset(input, target)
-
train_loader =DataLoader(train_dataset, batch_size=1000, shuffle=True)
-
-
# 数据训练
-
num_epochs =1000000
-
for epoch in range(num_epochs):
-
for step,(data, target)in enumerate(train_loader):
-
output = model(data)
-
loss = loss_fuc(output, target)
-
# 反向传播
-
optimizer.zero_grad()
-
loss.backward()
-
optimizer.step()
-
if loss.item()<0.0001:
-
break
-
# 保存整个网络
-
torch.save(model,'net.pkl')
-
神经网络性能测试
-
优化建议
-
输入层数据未经处理即进行数据训练,建议对数据进行归一化及均布化,可大幅度提高预测精度;
-
对于本类简单的分段函数问题而言,本实例中神经网络模型架构过于复杂,极大增加了训练时间,易发生数据过拟合。建议最多两个隐藏层,各层内128或64节点即可解决问题;
-
实例中的训练中止条件或无法判断神经网络模型是否已具备足够的预测精度,同时建议分割验证集来判断是否出现过拟合;
-
本实例中的测试集已加入到训练集样本中,无法反应神经网络模型的预测效果;
-
学习率等超参数有待优化。
待梁同学对ANN进行优化后,在与大家分享优化后的神经网络预测效果!
点击“阅读原文”可跳转至梁同学CSDN主页查看完整实现过程!
精彩回顾:
【会议总结】OpenSEES Days Eurasia 2019 in PolyU
-
PBSD
【PBSD】2019年更新历史——结构抗震性能设计软件PBSD
【PBSD】超限工程好助手:结构抗震性能设计软件PBSD功能简介
【PBSD】V1.0.5.0版正式发布:免费地震动工具箱之教学视频
【PBSD】【OpenSEES】【YTO】智能化的结构弹塑性分析全套解决方案
-
OpenSees
【OpenSEES】OpenSEES历史版本下载:v1.7.2-v3.1.0
【OpenSees】应力元纤维单元的Localization Issues
【OpenSEES】浅析迭代(二):基于LineSearch优化迭代算法
【OpenSEES】浅析迭代(三):基于Krylov优化迭代算法
【OpenSees】SecAggregator为DispBC赋予剪切刚度乃无用功
-
工具
【工具】OSRun [OpenSees运行辅助工具][开源]
【工具】FSV [OpenSees纤维截面可视化工具][开源]