• 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)

  • 相关阅读:
    多重背包POJ1276不要求恰好装满 poj1014多重背包恰好装满
    哈理工1053完全背包
    求最小公倍数与最大公约数的函数
    Bus Pass ZOJ 2913 BFS 最大中取最小的
    POJ 3624 charm bracelet 01背包 不要求装满
    HavelHakimi定理(判断一个序列是否可图)
    z0j1008Gnome Tetravex
    ZOJ 1136 Multiple BFS 取模 POJ 1465
    01背包 擎天柱 恰好装满 zjut(浙江工业大学OJ) 1355
    zoj 2412 水田灌溉,求连通分支个数
  • 原文地址:https://www.cnblogs.com/Turing-dz/p/13030925.html
Copyright © 2020-2023  润新知