遗传算法优化神经网络-优化图层和权重

时间:2020-05-05 00:28:49

标签: python python-3.x python-2.7 keras scipy

我尝试使用以下代码构建神经网络模型-多任务模型

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})

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

2 个答案:

答案 0 :(得分:1)

最初,我认为最好
-修正模型的架构,
-了解其中有多少个可训练的参数及其格式,
-创建随机的可训练参数种群,
-定义目标函数以进行优化,
-实现GA操作(复制,交叉,变异等),
-将这些权重和偏差的大小调整为正确的格式,
-然后使用这些权重和偏差运行ML模型,
-获取损失并更新人口,
-重复以上过程,直到达到新纪元为止/

希望有帮助。

答案 1 :(得分:0)

如果您是机器学习的新手,我不建议您使用遗传算法来优化您的体重。您已经使用“ Adam”编译了模型,“ Adam”是一个出色的基于梯度下降的优化器,它将为您完成所有工作,而应该使用它。

有关更多信息,请查看Tensorflow快速入门教程https://www.tensorflow.org/tutorials/quickstart/beginner

这是一个如何通过Google搜索实现遗传算法的示例... https://towardsdatascience.com/introduction-to-genetic-algorithms-including-example-code-e396e98d8bf3

如果要使用遗传算法进行超调,则可以将网络的超参数(层数,神经元)编码为基因。评估适用性非常昂贵,因为这将涉及为给定任务训练网络以获得最终测试损失。

如果要使用遗传算法进行优化,则可以将模型权重编码为基因,而适应度将直接与网络的丢失有关。