超参数搜索
1. 概念
为什么要超参数搜索:
-
神经网络有很多训练过程中不变的参数
- 网络结构参数:几层、每层宽度、每层激活函数等
- 训练参数:batch_size、学习率、学习率衰减算法等
-
手工尝试很费时间和人力
搜索策略:
- 网格搜索
- 随即搜索
- 遗传算法搜索
- 启发式搜索
2. 实践代码
2.1 手动实现
自己定义的学习率列表,通过循环来构建模型,调用不同的学习率来实现训练
# 此处以搜索学习率为例,手动实现超参数搜索 learning_rate:[1e-4,3e-4,1e-3,3e-3,1e-2,3e-2]
# W = w + grad * learning_rate
learning_rate = [1e-4,3e-4,1e-3,3e-3,1e-2,3e-2]
histories = []
for lr in learning_rate:
model = keras.models.Sequential([
keras.layers.Dense(30,activation='relu',input_shape=x_train.shape[1:]),
keras.layers.Dense