pso(粒子群算法)算法优化神经网络算法
2021/12/1 14:36:17
本文主要是介绍pso(粒子群算法)算法优化神经网络算法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
本文主要涉及工程实现,若要关注原理,网上比较多啦~
一、pso(粒子群)算法简要介绍
粒子群优化算法(PSO:Particle swarm optimization) 是一种进化计算技术(evolutionary computation)。源于对鸟群捕食的行为研究。粒子群优化算法的基本思想:是通过群体中个体之间的协作和信息共享来寻找最优解.
PSO的优势:在于简单容易实现并且没有许多参数的调节。目前已被广泛应用于函数优化、神经网络训练、模糊系统控制以及其他遗传算法的应用领域。
二、代码关键实现
首先需要安装pywarm这个训练包,使用
pip install pywarm
from pyswarm import pso #fine_tuning,nnunits,dropout,learning_rate lb=[0.2,0.0008] ub=[0.5,0.003] #上面是要调节的超参数的两个阈值。 xopt, fopt = pso(best_model, lb, ub)
其中best_model为我们神经网络返回的值,作为粒子群算法的目标值。本程序中设置的适应度函数的目标值为accuracy。下面是神经网络的部分代码。使用的是renet
def best_model(x,count=1): model = model_design(x) history = model.fit(X_train, Y_train, batch_size=1000, epochs=50, verbose=2, validation_data=(X_test, Y_test), #validation_split = 0.3, callbacks = [ keras.callbacks.ModelCheckpoint(filepath, monitor='val_loss', verbose=0, save_best_only=True, mode='auto'), keras.callbacks.EarlyStopping(monitor='val_loss', patience=10, verbose=0, mode='auto') ]) train_loss, train_acc = model.evaluate(X_train, Y_train, verbose=0) print(f"Train Accuracy:{train_acc} Train Loss: {train_loss}") test_loss, test_acc = model.evaluate(X_test, Y_test, verbose=0) print(f"Test Accuracy:{test_acc} Test Loss: {test_loss}") model.save(f"./model/model-{count}-{round(test_acc, 3)}-{round(test_loss, 3)}--Units-{x[0]}--Learning_rate-{x[1]}") np.savetxt(f"data-{count}.csv", x, delimiter=',') count = count test_acc_list = [] test_loss_list = [] count_no = [] test_units = [] test_learning_rate = [] if test_acc > 0.99 and count < 0: # Plot the graph count = count - 1 count_no.append(count) test_acc_list.append(test_acc) test_loss_list.append(test_loss) test_units.append(x[0]) test_learning_rate.append(x[1]) global result result = pd.DataFrame() result["count_no"] = count_no result["Test_Acc"] = test_acc_list result["Test_Loss"] = test_loss_list result["Units"] = test_units result["Learning_rate"] = test_learning_rate #描述训练集的loss val_loss_list = history.history['val_loss'] loss_list = history.history['loss'] plt.plot(range(len(loss_list)), val_loss_list) plt.plot(range(len(loss_list)), loss_list) plt.show() return test_acc
以上是使用pso算法进行神经网络优化的实现代码。具体全部代码的内容可以去我的github获取
https://github.com/cyjack/pso-deeplearning.git
三、相关信息
如果有关于pso进行模型参数优化的问题,可以来咨询我~微信:Paper_pass_a
这篇关于pso(粒子群算法)算法优化神经网络算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-01后台管理开发学习:新手入门指南
- 2024-11-01后台管理系统开发学习:新手入门教程
- 2024-11-01后台开发学习:从入门到实践的简单教程
- 2024-11-01后台综合解决方案学习:从入门到初级实战教程
- 2024-11-01接口模块封装学习入门教程
- 2024-11-01请求动作封装学习:新手入门教程
- 2024-11-01登录鉴权入门:新手必读指南
- 2024-11-01动态面包屑入门:轻松掌握导航设计技巧
- 2024-11-01动态权限入门:新手必读指南
- 2024-11-01动态主题处理入门:新手必读指南