已训练模型的超参数优化

莫甘博

我有一个语料库,将其分为三部分。

  1. 训练集80%
  2. 开发设定10%
  3. 测试集10%

我在训练集上训练了以下CNN模型,并针对开发集进行了评估

model.add(SpatialDropout1D(0.1))
model.add(Conv1D(128, kernel_size=3, padding='same', activation='relu'))
model.add(MaxPooling1D(pool_size=2))
model.add(Dropout(0.25))
model.add(Conv1D(64, kernel_size=3, padding='same', activation='relu'))
model.add(MaxPooling1D(pool_size=2))
model.add(Dropout(0.25))
model.add(Flatten())

# Fully connected (Dense layer)
model.add(Dense(64, activation='relu'))

# Output layer with sigmoid activation function
model.add(Dense(8, activation='sigmoid'))

我已经使用保存了该模型 model.save('model.h5')

现在,我想对保存的训练模型进行超参数优化,提供我的开发集作为训练集和测试集以进行评估。

我的价值观是

过滤器32/64/128/192/256/512 128/64
内核大小2/3/4/5/7 3
辍学率0.1 / 0.2 / 0.3 / 0.4 / 0.5 0.1 / 0.25
密集层大小16/32/64 /
128/256 32批次大小32/50/64/100 32
学习率0.1 / 0.01 / 0.001

如何使用Talos之类的库加载现有模型来实现这一目标?

保罗·德诺耶斯

根据您的最后评论,并从Keras文档中

(查找“ grid”,在scikit-learn网格中搜索超参数微调。以下代码应完全按原样运行。您可以使用所需的数据集对保存/加载的模型使用相同的方法)

from __future__ import print_function

import keras
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation, Flatten
from keras.layers import Conv2D, MaxPooling2D
from keras.wrappers.scikit_learn import KerasClassifier
from keras import backend as K
from sklearn.model_selection import GridSearchCV


num_classes = 10

# input image dimensions
img_rows, img_cols = 28, 28

# load training data and do basic data normalization
(x_train, y_train), (x_test, y_test) = mnist.load_data()

if K.image_data_format() == 'channels_first':
    x_train = x_train.reshape(x_train.shape[0], 1, img_rows, img_cols)
    x_test = x_test.reshape(x_test.shape[0], 1, img_rows, img_cols)
    input_shape = (1, img_rows, img_cols)
else:
    x_train = x_train.reshape(x_train.shape[0], img_rows, img_cols, 1)
    x_test = x_test.reshape(x_test.shape[0], img_rows, img_cols, 1)
    input_shape = (img_rows, img_cols, 1)

x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
x_train /= 255
x_test /= 255

# convert class vectors to binary class matrices
y_train = keras.utils.to_categorical(y_train, num_classes)
y_test = keras.utils.to_categorical(y_test, num_classes)


def make_model(dense_layer_sizes, filters, kernel_size, pool_size):
    '''Creates model comprised of 2 convolutional layers followed by dense layers

    dense_layer_sizes: List of layer sizes.
        This list has one number for each layer
    filters: Number of convolutional filters in each convolutional layer
    kernel_size: Convolutional kernel size
    pool_size: Size of pooling area for max pooling
    '''

    model = Sequential()
    model.add(Conv2D(filters, kernel_size,
                     padding='valid',
                     input_shape=input_shape))
    model.add(Activation('relu'))
    model.add(Conv2D(filters, kernel_size))
    model.add(Activation('relu'))
    model.add(MaxPooling2D(pool_size=pool_size))
    model.add(Dropout(0.25))

    model.add(Flatten())
    for layer_size in dense_layer_sizes:
        model.add(Dense(layer_size))
        model.add(Activation('relu'))
    model.add(Dropout(0.5))
    model.add(Dense(num_classes))
    model.add(Activation('softmax'))

    model.compile(loss='categorical_crossentropy',
                  optimizer='adadelta',
                  metrics=['accuracy'])
    return model


dense_size_candidates = [[32], [64], [32, 32], [64, 64]]
my_classifier = KerasClassifier(make_model, batch_size=32)
validator = GridSearchCV(my_classifier,
                         param_grid={'dense_layer_sizes': dense_size_candidates,
                                     # epochs is avail for tuning even when not
                                     # an argument to model building function
                                     'epochs': [3, 6],
                                     'filters': [8],
                                     'kernel_size': [3],
                                     'pool_size': [2]},
                         scoring='neg_log_loss',
                         n_jobs=1)
validator.fit(x_train, y_train)

print('The parameters of the best model are: ')
print(validator.best_params_)

# validator.best_estimator_ returns sklearn-wrapped version of best model.
# validator.best_estimator_.model returns the (unwrapped) keras model
best_model = validator.best_estimator_.model
metric_names = best_model.metrics_names
metric_values = best_model.evaluate(x_test, y_test)
for metric, value in zip(metric_names, metric_values):
    print(metric, ': ', value)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么在模型训练期间选择的超参数与重采样的超参数不同?

来自分类Dev

如何使用优化的权重训练模型?

来自分类Dev

如何在带有GridSearchCV的keras模型的超参数优化中使用简单的验证集?

来自分类Dev

多参数模型优化

来自分类Dev

超参数优化随机搜索的改进

来自分类Dev

超参数优化给出更差的结果

来自分类Dev

高斯混合模型-Matlab参数训练

来自分类Dev

定制KERAS模型的可训练参数

来自分类Dev

训练svm模型时如何调整参数

来自分类Dev

高斯混合模型-Matlab参数训练

来自分类Dev

用新实体训练Spacy模型后,将已训练的NER模型保存在哪里?

来自分类Dev

Azure ML Tune 模型超参数

来自分类Dev

为什么不优化火车数据集上的超参数?

来自分类Dev

在GPflow 2.0中设置超参数优化范围

来自分类Dev

卷积神经网络中超参数的优化

来自分类Dev

为什么不优化火车数据集上的超参数?

来自分类Dev

如何有两个优化器,一个优化器训练整个参数,而另一个优化器训练部分参数?

来自分类Dev

训练tensorflow模型会自动保存参数吗?

来自分类Dev

如何计算张量流模型中可训练参数的总数?

来自分类Dev

如何通过超参数调整来改善此模型

来自分类Dev

Cnn keras 模型没有训练参数代表什么并改进模型

来自分类Dev

客户错误:不允许使用额外的超参数 - 图像分类训练 - Sagemaker

来自分类Dev

什么是保存用于恢复和再训练的超参数的好方法

来自分类Dev

在Macbook Pro 13上用视频输入训练Keras模型会导致“已杀死:9”状态

来自分类Dev

如何加载已训练的 XGBoost 模型以在新数据集上运行?

来自分类Dev

如何从已保存的xgboost模型中替换参数?

来自分类Dev

检查某些实例参数是否已存在模型实例

来自分类Dev

获得回归训练模型

来自分类Dev

训练价格预测模型

Related 相关文章

  1. 1

    为什么在模型训练期间选择的超参数与重采样的超参数不同?

  2. 2

    如何使用优化的权重训练模型?

  3. 3

    如何在带有GridSearchCV的keras模型的超参数优化中使用简单的验证集?

  4. 4

    多参数模型优化

  5. 5

    超参数优化随机搜索的改进

  6. 6

    超参数优化给出更差的结果

  7. 7

    高斯混合模型-Matlab参数训练

  8. 8

    定制KERAS模型的可训练参数

  9. 9

    训练svm模型时如何调整参数

  10. 10

    高斯混合模型-Matlab参数训练

  11. 11

    用新实体训练Spacy模型后,将已训练的NER模型保存在哪里?

  12. 12

    Azure ML Tune 模型超参数

  13. 13

    为什么不优化火车数据集上的超参数?

  14. 14

    在GPflow 2.0中设置超参数优化范围

  15. 15

    卷积神经网络中超参数的优化

  16. 16

    为什么不优化火车数据集上的超参数?

  17. 17

    如何有两个优化器,一个优化器训练整个参数,而另一个优化器训练部分参数?

  18. 18

    训练tensorflow模型会自动保存参数吗?

  19. 19

    如何计算张量流模型中可训练参数的总数?

  20. 20

    如何通过超参数调整来改善此模型

  21. 21

    Cnn keras 模型没有训练参数代表什么并改进模型

  22. 22

    客户错误:不允许使用额外的超参数 - 图像分类训练 - Sagemaker

  23. 23

    什么是保存用于恢复和再训练的超参数的好方法

  24. 24

    在Macbook Pro 13上用视频输入训练Keras模型会导致“已杀死:9”状态

  25. 25

    如何加载已训练的 XGBoost 模型以在新数据集上运行?

  26. 26

    如何从已保存的xgboost模型中替换参数?

  27. 27

    检查某些实例参数是否已存在模型实例

  28. 28

    获得回归训练模型

  29. 29

    训练价格预测模型

热门标签

归档