Andrey Dik (EURUSD,M1) Zero divide, check divider for zero to avoid this error in 'D:\Market\MT5\MQL5\Scripts\Optimization Algorithms testScript.ex5'.
问题原来是脚本没有找到包含训练数据的文件。但无论如何,如果找不到数据文件,程序应该会处理这种情况。
但现在出现了这样的问题:
2024.11.21 17:27:37.038 优化算法 testScript (EURUSD,M1) 找到 50 个未删除的动态对象:
2024.11.21 17:27:37.038 优化算法 testScript (EURUSD,M1) 10 个 'CTensors' 类对象
2024.11.21 17:21 17:27:37.038 优化算法 testScript (EURUSD,M1) 40 个 'CMatrix' 类对象
2024.11.21 17:27:37.038 优化算法 testScript (EURUSD,M1) 发现 14816 字节泄漏内存
Andrey Dik #:
类对象似乎没有被删除。
问题是脚本没有找到用于训练的数据文件。但无论如何,如果找不到数据文件,程序应该会处理这种情况。
但现在出现了这样的问题:
2024.11.21 17:27:37.038 优化算法 testScript (EURUSD,M1) 找到 50 个未删除的动态对象:
2024.11.21 17:27:37.038 优化算法 testScript (EURUSD,M1) 10 个 'CTensors' 类对象
2024.11.21 17:21 17:27:37.038 优化算法 testScript (EURUSD,M1) 40 个 'CMatrix' 类对象
2024.11.21 17:27:37.038 优化算法 testScript (EURUSD,M1) 发现 14816 字节泄漏内存
这是因为一个类的一个实例只能调用一个 "fit "函数。我调用了多个拟合函数,结果在内存中创建了多个张量。
/* 在一个程序中调用一个神经网络类的多个拟合函数是个坏主意,太多的对象将 未从内存中删除,最好的办法是删除类的每个实例,并在每次 拟合函数后再次调用它。 */ nn.fit(x_train, y_train, new OptimizerMinBGD(nn_learning_rate), nn_epochs, nn_batch_size, show_batch); nn.fit(x_train, y_train, new OptimizerRMSprop(nn_learning_rate, 0.1), nn_epochs, nn_batch_size, show_batch); nn.fit(x_train, y_train, new OptimizerAdaGrad(nn_learning_rate), nn_epochs, nn_batch_size, show_batch); nn.fit(x_train, y_train, new OptimizerAdam(nn_learning_rate), nn_epochs, nn_batch_size, show_batch); nn.fit(x_train, y_train, new OptimizerAdaDelta(nn_learning_rate), nn_epochs, nn_batch_size, show_batch); nn.fit(x_train, y_train, new OptimizerNadam(nn_learning_rate), nn_epochs, nn_batch_size, show_batch); delete nn;
应该是这样的
//--- nn = new CRegressorNets(hidden_layers, AF_RELU_, LOSS_MSE_); x_train = scaler.fit_transform(x_train); nn.fit(x_train, y_train, new OptimizerMinBGD(nn_learning_rate), nn_epochs, nn_batch_size, show_batch); delete nn; //--- nn = new CRegressorNets(hidden_layers, AF_RELU_, LOSS_MSE_); x_train = scaler.fit_transform(x_train); nn.fit(x_train, y_train, new OptimizerAdam(nn_learning_rate), nn_epochs, nn_batch_size, show_batch); delete nn;
新文章 数据科学和机器学习(第 21 部分):解锁神经网络,优化算法揭秘已发布:
深入神经网络的心脏,我们将揭秘神经网络内部所用的优化算法。在本文中,探索解锁神经网络全部潜力的关键技术,把您的模型准确性和效率推向新的高度。
看似如今每个人都对人工智能感兴趣,它无处不在,openAI 背后如谷歌和微软等科技行业的大佬们正在推动人工智能在不同层面和行业的适配,譬如娱乐、医疗保健行业、艺术、创意、等等。
我在 MQL5 社区中也看到了这种趋势,随着矩阵和向量、以及 ONNX 引入 MetaTrader5,为什么不呢。现在可以制作任何复杂的人工智能交易模型。您甚至不需要成为线性代数专家或书呆子,就足以理解塞进系统中的所有内容。
尽管如此,机器学习的基本面现在比以往任何时候都更难找到,但它们对于巩固您对 AI 的理解同样重要。它们让您知晓为什么您要这样做,这令您变得灵活、并让您行使自己的选择权。关于机器学习,我们还有很多事情需要讨论。今天,我们将看到什么是优化算法,它们如何相互竞争,您应当何时、选择哪种优化算法,以便为您的神经网络获得更好的性能和准确性。
作者:Omega J Msigwa