首页 > 解决方案 > 使用遗传算法优化神经网络 - 优化层和权重

问题描述

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

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 中使用遗传算法优化神经网络的权重、层数和神经元数量

标签: pythonpython-3.xpython-2.7kerasscipy

解决方案


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

希望能帮助到你。


推荐阅读