采用遗传算法的优化神经网络&优化层次和权重



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

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中使用遗传算法优化神经网络的权重、层数和神经元数量我学习了很多关于它的教程,但我没有找到任何材料来讨论如何实现它
可以提供任何帮助

最初,我认为最好
-修复模型的架构,
--知道有多少可训练参数及其格式,
-创建可训练参数的随机群体,
>-定义目标函数进行优化,
1-实现GA操作(繁殖、交叉、突变等(,
-将这些权重和偏差的总体调整为正确的格式,
-然后用这些权重和偏见运行ML模型,
-获取损失,并更新总体,
>-用停止标准重复上述过程多次

希望能有所帮助。

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

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

下面是一个如何从谷歌搜索中实现遗传算法的例子。。。https://towardsdatascience.com/introduction-to-genetic-algorithms-including-example-code-e396e98d8bf3

如果你想用遗传算法进行超调,你可以将网络的超功率计(层数、神经元(编码为你的基因。评估适合度将是非常昂贵的,因为这将涉及到必须为给定任务训练网络,以获得其最终测试损失。

如果你想用遗传算法进行优化,你可以将模型权重编码为基因,并且适合度将与网络的损失直接相关。

最新更新