文章目录
https://blog.tensorflow.org/博客上好东西很多,获益匪浅,大家常看常练习
进入正题,keras tuner超参数优化框架
机器学习项目的成功往往是关键取决于良好的超参数的选择。随着机器学习作为一个领域继续成熟,依靠反复试验为这些参数找到合适的值(也称为“梯度下降”)根本无法扩展。实际上,通过复杂的超参数优化算法发现了许多当今的最新结果,例如EfficientNet。
在此,请大佬们拜读efficientnet论文
Keras Tuner是易于使用的可分配超参数优化框架,可解决执行超参数搜索的难题。使用Keras Tuner可以轻松定义搜索空间,并利用随附的算法来找到最佳的超参数值。Keras Tuner内置了贝叶斯优化,超带宽和随机搜索算法,并且还设计为研究人员可以轻松扩展以尝试使用新的搜索算法。
模型构建def build_model(hp):
这是一个简单的端到端示例。首先,我们定义一个模型构建功能。它采用一个hp参数,您可以从该参数中采样超参数,例如hp.Int(‘units’, min_value=32, max_value=512, step=32)(某个范围内的整数)。注意如何用模型构建代码内联定义超参数。下面的示例创建了一个简单的可调模型,我们将在CIFAR-10上进行训练
import tensorflow as tf
def build_model(hp):
inputs = tf.keras.Input(shape=(32, 32, 3))
x = inputs
for i in range(hp.Int('conv_blocks', 3, 5, default=3)):
filters = hp.Int('filters_' + str(i), 32, 256, step=32)
for _ in range(2):
x = tf.keras.layers.Convolution2D(
filters, kernel_size=(3, 3), padding='same')(x)
x = tf.keras.layers.BatchNormalization()(x)
x = tf.keras.layers.ReLU()(x)
if hp.Choice('pooling_' + str(i), ['avg', 'max']) == 'max':
x = tf.keras.layers.MaxPool2D()(x)
else:
x = tf.keras.layers.AvgPool2D()(x)
x = tf.keras.layers.GlobalAvgPool2D()(x)
x = tf.keras.layers.Dense(
hp.Int('hidden_size', 30, 100, step=10, default=50),
activation='relu')(x)
x = tf.keras.layers.Dropout(
hp.Float('dropout', 0, 0.5, step=0.1, default=0.5))(x