如何设置训练数据,使每次只有一组数据(行为曲线)被输入神经网络?

1次观看(过去30天)
Hiew绮
Hiew绮 2021年9月6日
我正在研究一种路径依赖神经网络,以预测给定一组参数的应力应变行为。输入和输出如下:
  1. 投入:混凝土强度,屈服强度,钢比,…, strain(800个预定义步长,增量一致)
  2. 输出:压力
训练数据是这样的( 行,我 预测变量 行米 反应变量 ):
对于每个样本,我有801行数据(800个预定义的应变步骤),它是一个应力应变曲线,因此数据是路径依赖的。我有100个样本要训练。我的问题是 如何处理一个标本的数据 (801行)为 一批 提供给 神经网络 每次一条曲线(一个标本) 重复(以优化)直到100个标本被喂食 ?我认为数据必须按顺序输入,因为它是路径依赖的。
我试着写一个for循环,它看起来像下面,但它每次都会覆盖偏差和权重。换句话说,最终,权重和偏差只使用数据的最后一个样本(一个样本)进行训练。
B = 2:100
输入= predVar(1:801,:);
目标= resVar(1:801,1);
Nn = train(net,输入',目标');
input = predVar(801*(b-1):801*b,:);
target = resVar(801*(b-1):801*b,1);
Nn = train(net,输入',目标');
结束
我开发的神经网络是一个 前馈神经网络 .在预测阶段,还创建了一个循环来预测每个预定义应变步骤的应力。在过去的三个星期里,我一直在寻找答案,但运气不佳。欢迎提供任何建议和建议。
谢谢你阅读这篇文章。安全健康!
1评论
路德维希·阿明
路德维希·阿明 2021年9月7日
你好,
你应该知道,神经网络什么时候应该停止训练。
例如,我创建了一个具有fitnet功能的网。我没有改变网络的属性,因此默认设置如下:
> > net.trainParam
ans =
函数'trainlm'的参数
显示培训窗口反馈显示窗口:真
显示命令行反馈showCommandLine: false
命令线频率显示:25
最大时代时代:1000
最大培训时间时间:正
性能目标目标:0
最低梯度min_grad: 1 e-07
最大验证检查max_fail: 6
μμ:0.001
μ减少比例mu_dec: 0.1
μ增加的比例mu_inc: 10
最大μmu_max: 10000000000
这意味着,当出现以下任何一种情况时,训练就会停止:
  • 最大数量时代(重复)达到。
  • 最大数量时间是超过。
  • 性能被最小化到目标
  • 性能梯度如下min_grad
  • μ超过mu_max
  • 验证性能的提高超过max_fail自上次减少以来的次数(使用验证时)。
迫使你的网络完成100个epoch,然后停止 (我不建议这样做,因为停止训练的指示器应该始终是一个性能-/最小误差目标) ,你可以改变你的TrainingFunction的贝叶斯正则化与线
网TrainFcn =“trainbr”
通过贝叶斯正则化,当发生以下任何情况时,训练停止:
  • 最大数量时代(重复)达到。
  • 最大数量时间是超过。
  • 性能被最小化到目标
  • 性能梯度如下min_grad
  • μ超过mu_max
通过使用以下设置,停止训练的唯一方法是完成100个epoch,因为时间、目标、min_grad和mu_max都无法达到。
net.trainParam
ans =
函数'trainbr'的参数
显示培训窗口反馈显示窗口:真
显示命令行反馈showCommandLine: false
命令线频率显示:25
最大时代时代:100
最大培训时间时间:正
性能目标目标:0
最低梯度min_grad: 1 e - 100
最大验证检查max_fail: 0
μμ:0.005
μ减少比例mu_dec: 0.1
μ增加的比例mu_inc: 10
最大μmu_max: 1 e + 100

登录评论。

答案(0)

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!