繁体   English   中英

使用 g.netic 算法优化神经网络 - 优化层和权重

[英]optimization neural network with genetic algorithm- optimize layers and weights

我尝试使用以下代码构建 neural.network model - 多任务 model

inp = Input((336,))
x = Dense(300, activation='relu')(inp)
x = Dense(256, activation='relu')(x)
x = Dense(128, activation='relu')(x)
x = Dropout(0.1)(x)
x = Dense(56, activation='relu')(x)
x = Dense(16, activation='relu')(x)
x = Dropout(0.1)(x)
out_reg = Dense(1, name='reg')(x)
out_class = Dense(1, activation='sigmoid', name='class')(x) # I suppose bivariate classification problem

model = Model(inp, [out_reg, out_class])

model.compile('adam', loss={'reg':'mse', 'class':'binary_crossentropy'}, 
              loss_weights={'reg':0.5, 'class':0.5})

现在我想使用 g.netic 算法在 python 中使用 g.netic 算法优化神经网络权重、层和神经元数量我学到了很多关于它的教程,但我没有找到任何材料讨论如何实现它
任何帮助将不胜感激

最初,我认为最好是
- 修复model的架构,
- 了解有多少可训练参数及其格式,
- 创建可训练参数的随机群体,
- 定义目标 function 进行优化,
- 实施 GA 操作(复制、交叉、变异等),
- 将这些权重和偏差的数量调整为正确的格式,
- 然后使用这些权重和偏差运行 ML model,
- 丢失并更新人口,
- 重复上述过程若干个纪元/使用停止标准

希望能帮助到你。

如果您是机器学习的新手,我不建议您使用 g.netic 算法来优化您的权重。 您已经使用“Adam”编译了 model,这是一个优秀的基于梯度下降的优化器,将为您完成所有工作,您应该改用它。

查看 Tensorflow 快速入门教程了解更多信息https://www.tensorflow.org/tutorials/quickstart/beginner

下面是如何通过 Google 搜索实现 g.netic 算法的示例... https://towardsdatascience.com/introduction-to-g.netic-algorithms-including-example-code-e396e98d8bf3

如果您想使用 g.netic 算法进行超调谐,您可以将网络的超参数(层数、神经元数)编码为您的基因。 评估适应度将非常昂贵,因为这将涉及必须针对给定任务训练网络以获得其最终测试损失。

如果要用g.netic算法做优化,可以将model个权重编码为基因,适应度与.network的loss直接相关。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM