grace_t.scripts.keras_demo 源代码

#!/usr/bin/env python
# -*- coding: utf8 -*-
 
import os
import ConfigParser
import logging

import numpy

from keras.utils import np_utils
from keras.models import Sequential 
from keras.layers import Dense 
from keras.layers import Dropout

from keras.optimizers import SGD

# cnn
from keras.datasets import mnist
from keras.layers import Convolution2D
from keras.layers import MaxPooling2D
from keras.layers import Flatten


from common_import import BaseKerasSklearnModel as BaseKerasSklearnModel
from common_import import BaseKerasModel as BaseKerasModel

base_path = os.path.dirname(os.path.abspath(__file__)) + "/../"
os.sys.path.append(base_path)
config_path = base_path + '/conf/'
data_path = base_path + '/data/'


[文档]def my_cnn_load_data(): ''' my_cnn_load_data ''' (X_train, y_train), (X_test, y_test) = mnist.load_data() X_train = X_train.reshape(X_train.shape[0], 1, 28, 28) X_test = X_test.reshape(X_test.shape[0], 1, 28, 28) classes = set() for i in y_train: classes.add(i) y_train = np_utils.to_categorical(y_train) y_test = np_utils.to_categorical(y_test) dataset = (X_train, y_train) return (dataset, X_train, y_train, X_test, y_test)
[文档]def my_cnn_create_model(num_classes): ''' create a cnn model ''' # Define and Compile model = Sequential() model.add(Convolution2D(32, 3, 3, border_mode='valid', input_shape=(1, 28, 28), activation='relu')) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Flatten()) model.add(Dense(128, activation='relu')) model.add(Dense(num_classes, activation='softmax')) sgd = SGD(lr=0.1, momentum=0.9, decay=0.0001, nesterov=True) # learning rate schedule model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['accuracy']) # Fit the model #model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) # Fit the model return model
[文档]def my_load_data(data_file, delimiter, lst_x_keys, lst_y_keys): ''' my load data ''' # Load the dataset dataset = numpy.loadtxt(data_file, delimiter=delimiter) X = dataset[:, lst_x_keys] Y = dataset[:, lst_y_keys] ## mock X_test = X Y_test = Y return (dataset, X, Y, X_test, Y_test)
[文档]def my_create_model(): ''' my create model ''' print "using self defined create_model!!" # Define and Compile model = Sequential() model.add(Dense(12, input_dim=8, init='uniform', activation='relu')) model.add(Dense(8, init='uniform', activation='relu')) model.add(Dense(1, init='uniform', activation='sigmoid')) model.add(Dropout(0.2)) sgd = SGD(lr=0.1, momentum=0.9, decay=0.0001, nesterov=True) # learning rate schedule model.compile(loss='binary_crossentropy', optimizer=sgd, metrics=['accuracy']) # Fit the model #model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) # Fit the model return model
[文档]def train_keras_demo(): ''' train_keras_demo ''' data_file = data_path + 'pima-indians-diabetes.csv' lst_x_keys = list(xrange(0, 8)) lst_y_keys = 8 delimiter = ',' ### base config_file = config_path + 'demo_base.conf' conf = ConfigParser.ConfigParser() conf.read(config_file) demo_log_file = base_path + "log/" + conf.get("log", "log_name") demo_model_path = base_path + "model/" + conf.get("model", "model_path") #base_inst = BaseKerasModel(data_file, delimiter, lst_x_keys, lst_y_keys, \ # log_filename=demo_log_file, model_path=demo_model_path, create_model_func=create_model) dict_params = {} dict_params["load_data"] = {} dict_params["create_model"] = {} dict_params["basic_params"] = {} dict_load_data = dict_params["load_data"] dict_load_data["method"] = my_load_data dict_load_data["params"] = {} dict_load_data_params = dict_load_data["params"] dict_load_data_params["data_file"] = data_file dict_load_data_params["delimiter"] = delimiter dict_load_data_params["lst_x_keys"] = lst_x_keys dict_load_data_params["lst_y_keys"] = lst_y_keys dict_create_model = dict_params["create_model"] dict_create_model["method"] = my_create_model dict_create_model["params"] = {} dict_basic_params = dict_params["basic_params"] dict_basic_params["log_filename"] = demo_log_file dict_basic_params["model_path"] = demo_model_path base_inst = BaseKerasModel(**dict_params) base_inst.process() return 0
[文档]def train_keras_sklearn_demo(): ''' train_keras_sklearn_demo ''' ## sklearn data_file = data_path + 'pima-indians-diabetes.csv' lst_x_keys = list(xrange(0, 8)) lst_y_keys = 8 delimiter = ',' config_file = config_path + 'demo_base_sklearn.conf' conf = ConfigParser.ConfigParser() conf.read(config_file) demo_log_file = base_path + "log/" + conf.get("log", "log_name") demo_model_path = base_path + "model/" + conf.get("model", "model_path") dict_params = {} dict_params["load_data"] = {} dict_params["create_model"] = {} dict_params["basic_params"] = {} dict_load_data = dict_params["load_data"] dict_load_data["method"] = my_load_data dict_load_data["params"] = {} dict_load_data_params = dict_load_data["params"] dict_load_data_params["data_file"] = data_file dict_load_data_params["delimiter"] = delimiter dict_load_data_params["lst_x_keys"] = lst_x_keys dict_load_data_params["lst_y_keys"] = lst_y_keys dict_create_model = dict_params["create_model"] dict_create_model["method"] = my_create_model dict_create_model["params"] = {} dict_basic_params = dict_params["basic_params"] dict_basic_params["log_filename"] = demo_log_file dict_basic_params["model_path"] = demo_model_path ## base_sklearn_inst = BaseKerasSklearnModel(data_file, delimiter, lst_x_keys, lst_y_keys, \ ## log_filename=demo_log_file, model_path=demo_model_path, \ ## create_model_func=create_model) base_sklearn_inst = BaseKerasSklearnModel(**dict_params) base_sklearn_inst.process() return 0
[文档]def train_keras_cnn_demo(): ''' train_keras_cnn_demo ''' ### base config_file = config_path + 'demo_base.conf' conf = ConfigParser.ConfigParser() conf.read(config_file) demo_log_file = base_path + "log/" + conf.get("log", "log_name") demo_model_path = base_path + "model/" + conf.get("model", "model_path") #num_classes = len(classes) num_classes = 10 dict_params = {} dict_params["load_data"] = {} dict_params["create_model"] = {} dict_params["basic_params"] = {} dict_load_data = dict_params["load_data"] dict_load_data["method"] = my_cnn_load_data dict_load_data["params"] = {} dict_load_data_params = dict_load_data["params"] # dict_load_data_params["delimiter"] = delimiter # dict_load_data_params["lst_x_keys"] = lst_x_keys # dict_load_data_params["lst_y_keys"] = lst_y_keys dict_create_model = dict_params["create_model"] dict_create_model["method"] = my_cnn_create_model dict_create_model["params"] = {} dict_create_model_params = dict_create_model["params"] dict_create_model_params["num_classes"] = num_classes dict_basic_params = dict_params["basic_params"] dict_basic_params["log_filename"] = demo_log_file dict_basic_params["model_path"] = demo_model_path base_inst = BaseKerasModel(**dict_params) base_inst.process()
if "__main__" == __name__: train_keras_demo() train_keras_sklearn_demo() train_keras_cnn_demo() exit(0)