(深度学习)Keras用法

一、Keras
keras 是一个高层神经网络API,Keras由纯python编写而成并基于Tensorflow、Theano以及CNTK后端。
可以通过import keras查看keras用的什么后端,例如输出的是​​在这里插入图片描述
,可以在keras.json文件修改后端
(深度学习)Keras用法_第1张图片
或者在代码中临时修改import os
os.environ[‘KERAS_BACKEND’]=‘tensorflow’。
二、Keras文档地址:https://keras.io/
三、Keras Sequential 模型开发的典型流程
在Keras中,模型开发主要是以Sequential为主,称为序贯模型,也就是单输入单输出,一路到底,层与层之间只有相邻关。这种模型编译速度快,操作简单。流程如下:
1.开发模型,创建Sequential model添加layers。
2.编译模型,定义loss function 和optimizers,调用compile()
3.Fit model,用fit() function 训练模型
4.预测,采用evaluate()或predict()函数预测新数据
四、模型参数的保存和加载

model.summary()#在keras中显示各个层的详细信息

#通过summary查看layer的name然后获取model的参数
embed_layer=model.get_layer(name='embedding_5')
em_weight=embed_layer.get_weights()

#利用上面训练好model的参数,
model2=Sequential()
model2.add(Embeding(vocab_size,8,input_length=max_length,weights=em_weight,trainable=False))#trainable=False让参数不可训练

#如果想要保存layer的权重
model.save_weight('d:\\model_weight.hdf')
#加载某个model的权重
model.load_weight('d:\\model_weight.hdf')#但是两个模型神经元等必须一样不然会报错

五、注意
1.model 添加layer时不需要指定样本数、
六、CNN model

import numpy
from keras.datasets import cifar10
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import Dropout
from keras.layers import Flatten
from keras.layers import BatchNormalization
from keras.constraints import maxnorm
from keras.layers.convolutional import Conv2D
from keras.layers.convolutional import MaxPooling2D 
from keras.untils import np_untils
from keras import backend as K


def data_process():
    X_train, y_train,X_test, y_test = cifar10.load_data()
    X_train, y_train,X_test, y_test = cifar10.load_data()
    X_train = X_train.astype('float32')
    X_test = X_test.astype('float32')
    X_train = X_train / 255.0
    X_test = X_test / 255.0
    
    y_train = np_utils.to_categorical(y_train)
    y_test = np_utils.to_categorical(y_test)
    num_classes = y_test.shape[1]
    return X_train, y_train,X_test, y_test,num_classes
def cnnmodel():
    X_train, y_train,X_test, y_test,num_classes=data_process()
    # Create the model
    model = Sequential()
    model.add(Conv2D(filters=32, kernel_size=3, strides=3, input_shape=(32, 32,3), padding='same',activation='relu'))
    model.add(Dropout(0.2))
    model.add(Conv2D(filters=32, kernel_size=3, strides=3, activation='relu', padding='same'))
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Flatten())
    model.add(Dense(512, activation='relu'))
    model.add(BatchNormalization())
    model.add(Dropout(0.5))
    model.add(Dense(num_classes, activation='softmax'))
    # Compile model
    epochs = 2

    model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])#metrics=['accuracy']是可选的
    print(model.summary())

    # Fit the model
    model.fit(X_train, y_train, validation_split=0.2, epochs=epochs,
    batch_size=32, verbose=1)#verbose=1表示粗略的显示信息,0表示不输出信息,2表示输入最细致的信息
    # Final evaluation of the model
    scores = model.evaluate(X_test, y_test, verbose=0)
    print("Accuracy: %.2f%%" % (scores[1]*100))
if __name__=='__main__':
    cnnmodel()

你可能感兴趣的:(深度学习)