数据分析师养成之路之keras篇(sklearn 与keras结合实现调参)

keras 调参(姑且这么叫)
参考网址: http://www.cnblogs.com/surfzjy/p/6445404.html
话不多说,上代码:
导包:

from keras.datasets import cifar10
from keras.layers import Input, Dense, Dropout, Activation, Flatten

from keras import Model,models
from keras.models import Sequential, load_model, Model
from keras.layers import Convolution2D, MaxPooling2D
import keras
# sklean接口的包装器KerasClassifier,作为sklearn的分类器接口
from keras.wrappers.scikit_learn import KerasClassifier
from sklearn.preprocessing import label_binarize
from sklearn.grid_search import GridSearchCV
import numpy as np

加载数据

(X_train,y_train),(X_test,y_test)=cifar10.load_data()

y_test=label_binarize(y_test,np.arange(10))
y_train=label_binarize(y_train,np.arange(10))

X_train = X_train.astype('float32')
X_test = X_test.astype('float32')
X_train /= 255
X_test /= 255

建立模型
注意:模型一定要放在函数中!!否则可能会出现一些线程问题.
(当然,模型还是只作为参考,很low)

def make_model():
    x=Input(shape=(32,32,3))
    y=x
    y = Convolution2D(filters=64, kernel_size=3, strides=1, padding='same', activation='relu', kernel_initializer='he_normal')(y)
    y = Convolution2D(filters=64, kernel_size=3, strides=1, padding='same', activation='relu', kernel_initializer='he_normal')(y)
    y = MaxPooling2D(pool_size=2, strides=2, padding='valid')(y)

    y=Flatten()(y)
    y=Dropout(0.2)(y)
    y=Dense(units=10,activation='softmax')(y)

    model=Model(inputs=x,outputs=y,name='model')

    model.compile(loss='categorical_crossentropy',调用接口,开始调参
                  optimizer='adadelta',
                  metrics=['accuracy'])
    return model 

调用接口,开始调参

my_classifier = KerasClassifier(make_model)
validator = GridSearchCV(my_classifier,
                         param_grid={
                                     'epochs': [2],
                                     'batch_size':[64]},
                         scoring='roc_auc')


validator.fit(X_train, y_train)
print('Yhe parameters of the best model are:\n')
#输出的是字典
print(validator.best_params_)
best_model = validator.best_estimator_.model
# 度量值的名称
metric_names = best_model.metrics_names 
# metric_names = ['loss', 'acc']
# 度量值的数值
metric_values = best_model.evaluate(X_test, y_test)
for metric, value in zip(metric_names, metric_values):
    print(metric, ': ', value)
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值