(深度学习)Keras用法

一、Keras
keras 是一个高层神经网络API,Keras由纯python编写而成并基于Tensorflow、Theano以及CNTK后端。
可以通过import keras查看keras用的什么后端,例如输出的是​​在这里插入图片描述
,可以在keras.json文件修改后端
在这里插入图片描述
或者在代码中临时修改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()
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值