GithubHelp home page GithubHelp logo

ga_bp's Introduction

ga_bp

a back propagation neural network with genetic algorithm

利用遗传算法对bp神经网络进行权值优化 优化过后,loss收敛速度变快,收敛结果较为稳定,结果较未优化的相比小了一点,这说明遗传算法有一定的作用。 但效果不是特别显著,均方误差0.001,是现在最好的情况,也勉强还可以接受,到时候再挣扎一下...

.py说明

  1. ga_main.py

程序入口函数,定义ga一些参数,负责整体的ga_bp过程

  1. ga_encoding.py

ga编码函数,对所有的变量进行编码,这里采用的是二进制编码,实数编码准备在考虑一下

  1. ga_decoding.py

ga解码函数,对编码后的二进制码进行解码,转换成十进制形式

  1. ga_calObject.py

计算目标值,是调用神经网络的函数

  1. ga_calFitness.py

计算每一代种群中的最优个体

  1. ga_replace.py

个体替换函数,用上一代最优个体替换本代最差个体

  1. ga_selection.py

ga选择函数,以轮盘赌的方式选择一些个体组成新的种群,淘汰掉一些目标值较低的个体

  1. ga_crossover.py

ga交叉函数,以一定概率选择两个个体进行交叉

  1. ga_mutation.py

ga变异函数,以一定概率选择个体进行变异

  1. ga_getBest.py

从所有代中选择一代最优种群

  1. bp_object.py

该函数位于ga_calObject.py中,用于计算loss,并返回loss的倒数作为目标值

  1. bp_train.py

遗传算法迭代结束后选择最优权值传入此文件中进行训练,达到优化效果

  1. 10790.csv

训练数据(打乱)

这是原始的一版ga_bp优化代码。如果允许,可以用作论文中实验(代码注释、结构、功能尚未优化,可以按需增改)。这里的采用的是二进制编码,接下来会用实数编码在写一个程序,看看是否会比二进制更好一些,同时也会不断修改这一版本的代码参数,力求更好。

Update-实数编码

  1. 增加了bp_test.py函数,该函数用来测试模型的性能,同时增加测试集3597.csv
  2. 在ga_bp文件内添加了ga_bp_real包,该包内的程序为实数编码的遗传算法,与上面二进制编码相对应。 主要的改变在于去掉了ga_decoding.py,修改了ga_encoding.py,ga_crossover.py,ga_mutation.py这几个文件。 相对于二进制编码来说,实数编码没有二进制和十进制转换问题,减少了一些可能的转换误差,同时也减少了计算量,按照网上和论文中的说法,应该更为准确。 但实际实验后并没有与二进制编码有所区别...可能是实验效果真的到了极限,但算法本身肯定也存在需要优化的地方。遗传算法种群的变化需要再优化。

ga_bp's People

Contributors

sureelee avatar

Stargazers

Jason Xiao avatar  avatar  avatar by avatar hydroakri avatar  avatar HappyChu avatar  avatar  avatar  avatar  avatar jiabin99 avatar  avatar  avatar haozhi avatar  avatar 蔡依炼 avatar  avatar  avatar zx avatar  avatar chenrobotcat avatar  avatar  avatar Kurnia Oktaviani avatar 高煜朗 avatar  avatar 宗艺墨 avatar  avatar  avatar  avatar  avatar gheng avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar GuYi avatar lee avatar  avatar Jincheng He avatar  avatar Hmz avatar  avatar swpper avatar limon avatar KenChen avatar PetrichorApril avatar  avatar  avatar  avatar Nyakku Shigure avatar  avatar  avatar zhen avatar FreyaUndergrad avatar zhe.zuo avatar  avatar Rookie avatar tree avatar  avatar  avatar  avatar JihongWEI avatar  avatar Cheng Jinxiu avatar  avatar  avatar  avatar Leo xu avatar  avatar

Watchers

 avatar limon avatar

ga_bp's Issues

关于二进制解码问题

您好,请问下源码中二进制编码使用的解码ga-decoding.py中
def reduce(pop):
population = [[]]
for po in pop:
temp = []
for p in po:
p = -0.5 + p*(1/255)
temp.append(round(p,8))
population.append(temp)
return population[1:]

p=-0.5+p*(1/255) 不明白为什么这样计算,能否解释下,谢谢

运行报错了。

我运行的是main文件,好像里面那个ga_enconding函数不能用。

数据集的格式?

您好,请问数据集的格式是什么?哪几列是输入?哪几列是输出?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.