zoukankan      html  css  js  c++  java
  • keras_API汇总积累(熟读手册)二,函数式API

    输入和输出均为张量,它们都可以用来定义一个模型(Model),这样的模型同 Keras 的 Sequential 模型一样,都可以被训练。

    1.建立Model

    from keras.layers import Input,Dense,TimeDistributed,Embedding,LSTM,contatenate,Maxpooling2D,Flatten

    from keras.models import Model

    inputs=Input(shape=(784,))

    x=Dense(64,activation='relu')(inputs)

    x=Dense(64,activation='relu')(x)

    out=Dense(10,activation='softmax')(x)

    x=Embedding(output_dim=512,input_dim=1000,input_length=100)(x)

    lstm_out=LSTM(32)(x)

    x=keras.layers.concatenate([lstm,x],axis=-1)

    x=MaxPooling2D((3,3),strides=(1,1),padding='same')(x)

    z=keras.layers.add([x,y])#残差网络

    x=Flatten()(x)

    model = Model(inputs=[a1, a2], outputs=[b1, b3, b3])

    2.编译

    model=Model(inputs=inputs,outputs=out)

    processed_sequences=TimeDistributed(model)(input_sequences)#将图像分类模型转换成为视频分类模型,input_sequences=Input(shape=(时间序列,向量维度))

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

    compile(optimizer, loss=None, metrics=None, loss_weights=None, sample_weight_mode=None, weighted_metrics=None, target_tensors=None)

    3.训练

    model.fit(data,labels)

     fit(x=None, y=None, batch_size=None, epochs=1, verbose=1, callbacks=None, validation_split=0.0, validation_data=None, shuffle=True, class_weight=None, sample_weight=None, initial_epoch=0, steps_per_epoch=None, validation_steps=None)

    4.评估

    evaluate(x=None, y=None, batch_size=None, verbose=1, sample_weight=None, steps=None)

    5.预测、

    predict(x, batch_size=None, verbose=0, steps=None)

    a.数据并行(串)

    from keras.utils import mulit_gpu_model

    parallel_model=multi_gpu_model(model,gpu=8)#8个gpu并运的model。

    b.设备并行(并)

    with tf.device_scope('/gpu:0'):

      encode_a=Lstm(x1)#在一个GPU上处理第一个序列

    with tf.device_scope('/gpu:1'):

      encode_a=Lstm(x2)#在另一个GPU上处理另一个序列

    with tf.device_scope('/cpu:0'):

      merged_vector=keras.layers.concatenate([encode_a,encode_b],axis=-1)#在cpu上连接结果

    c.保存并重载模型(结构权重,优化器状态)

    from keras.models import load_model

    model.save('my.h5')

    del model

    model= load_model('my.h5')

    d。只保存加载模型结构

    json_string=model.to_json()#保存为JSON结构

    yaml_string=model.to_yaml()#保存为YAML结构

    from keras.models import model_from_json,model_from_yaml

    重建模型:model=model_from_json(json_string)

    model=model_from_yaml(yaml_json)

    e.只保存加载模型权重

    model.save_weights('weights.h5')

    model.load_weights('weights.h5',by_name=True)#true时,就是将名字一样的层的权重加载,不一样的层不加载

     f.批量训练预测数据

    model.train_on_batch(x,y)

    model.test_on_batch(x,y)

    g.验证集误差不再下降的早停;

    from keras.callbacks import EarlyStopping

    early_stopping = EarlyStopping(monitor='val_loss', patience=2)

    model.fit(x, y, validation_split=0.2, callbacks=[early_stopping])

    h.冻结释冻模型参数

    layer.trainable=True/False

    I.图形模型:

    from keras.applications.xception import Xception

    from keras.applications.vgg16 import VGG16

    from keras.applications.vgg19 import VGG19

    from keras.applications.resnet50 import ResNet50

    from keras.applications.inception_v3 import InceptionV3

    from keras.applications.inception_resnet_v2 import InceptionResNetV2

    from keras.applications.mobilenet import MobileNet

    from keras.applications.densenet import DenseNet121

    from keras.applications.densenet import DenseNet169

    from keras.applications.densenet import DenseNet201

    from keras.applications.nasnet import NASNetLarge

    from keras.applications.nasnet import NASNetMobile

    from keras.applications.mobilenet_v2 import MobileNetV2

    model = VGG16(weights='imagenet', include_top=True)

    j.model.summary() 打印出模型概述信息

    model.get_config() 返回包含模型配置信息的字典

    k.置换输入维度

    keras.layers.Permute(dims)

    L.将任意表达式封装成layer对象

    keras.layers.Lambda(function, output_shape=None, mask=None, arguments=None)

    m.keras.layers.UpSampling2D(size=(2, 2), data_format=None, interpolation='nearest')

    keras.layers.ZeroPadding2D(padding=(1, 1), data_format=None)

    keras.layers.MaxPooling2D(pool_size=(2, 2), strides=None, padding='valid', data_format=None)

    keras.layers.AveragePooling2D(pool_size=(2, 2), strides=None, padding='valid', data_format=None)

    全局最大池化keras.layers.GlobalMaxPooling2D(data_format=None)

    全局平均池化keras.layers.GlobalAveragePooling2D(data_format=None)

  • 相关阅读:
    LeetCode 476 数字的补数
    MySQL与Java 整型数据映射
    TINYINT[M]、INT[M]和BIGINT[M]中M值的意义
    git删除本地分支
    git 初始化项目、创建本地分支、本地分支与远程分支关联
    Java 当文件不存在时自动创建文件目录和文件
    Java 在文件末尾追加内容
    免密自动登陆SAPGui
    SAP GUI770下载及安装
    notepad++格式化json,无法安装json插件
  • 原文地址:https://www.cnblogs.com/Turing-dz/p/13030925.html
Copyright © 2011-2022 走看看