• keras 模型简介


    keras模型
    在keras中主要有两种模型,顺序模型,以及模型类(类的内部有函数)

    model.layers 是层的列表,他们组成了模型
    
    model.inputs 是模型输入的张量
    
    model.outputs 是模型输出的张量
    
    model.summary() 打印模型的概要,还有另外一种写法utils.print_summary
    
    model.get_config() 返回模型配置的字典,通过以下方式重新加载配置
    config = model.get_config()
    model = Model.from_config(config)
    # or, for Sequential:
    model = Sequential.from_config(config)
    
    model.get_weights() 以Numpy数组的形式返回模型中所有权重张量的列表
    
    model.set_weights(weights) 通过一个numpy数组设置模型权重值,这个数组的结构与get_weights()返回的数组列表结构相同(比如都是3*4的矩阵)。
    
    model.to_json() 以JSON字符串的形式返回模型的表示形式。注意,表示不包含权重,只包含结构。您也可以通过以下方式用JSON字符串重载相同的模型(使用重新初始化的权重):
    from keras.models import model_from_json
    json_string = model.to_json()
    model = model_from_json(json_string)
    
    model.to_yaml()以YAML字符串的形式返回模型的表示形式。注意,表示不包含权重,只包含结构。您可以通过以下方式用YAML字符串重载相同的模型(使用重新初始化的权重):
    from keras.models import model_from_yaml
    yaml_string = model.to_yaml()
    model = model_from_yaml(yaml_string)
    
    model.save_weights(filepath) 将模型的权重保存为HDF5 文件
    
    model.load_weights(filepath, by_name=False) 从HDF5文件(由save_weights创建)重载模型的权重。默认情况下,架构应该保持不变。要将权重加载到不同的体系结构中(与某些层共享),使用by_name=True可以只加载具有相同名称的那些层。

    模型继承
    除了这两种类型的模型,通过继承Modle类并且实现你自己的方法调用,您可以创建自己的完全自定制的模型 (模型类是在Keras 2.2.0中引入的)。

    下面是模型类实现的一个简单的多层感知模型

    import keras
    class SimpleMLP(keras.Model):
    
    def __init__(self, use_bn=False, use_dp=False, num_classes=10):
    super(SimpleMLP, self).__init__(name='mlp')
    self.use_bn = use_bn
    self.use_dp = use_dp
    self.num_classes = num_classes
    
    self.dense1 = keras.layers.Dense(32, activation='relu')
    self.dense2 = keras.layers.Dense(num_classes, activation='softmax')
    if self.use_dp:
    self.dp = keras.layers.Dropout(0.5)
    if self.use_bn:
    self.bn = keras.layers.BatchNormalization(axis=-1)
    
    def call(self, inputs):
    x = self.dense1(inputs)
    if self.use_dp:
    x = self.dp(x)
    if self.use_bn:
    x = self.bn(x)
    return self.dense2(x)
    
    model = SimpleMLP()
    model.compile(...)
    model.fit(...)

    layers在__init__() 中定义,在call中调用,在call函数中,你可以通过调用self.add_loss(loss_tensor)自定义累计损失

    在模型继承中,模型是通过python代码定义的,以下方法和属性在模型继承中是不能使用的。

    model.inputs 和 model.outputs
    model.to_yaml() 和 model.to_json()
    model.get_config() 和 model.save()
  • 相关阅读:
    多线程实际应用踩坑
    SpringBoot远程接口调用-RestTemplate使用
    Python测试Post请求
    Ubuntu基于zsh自定义设置shell主题
    github-share报错无法读取远程仓库
    JVM是如何处理异常的
    springboot之父pom操作
    php 后台json 转 js数组
    tp 外连接查询
    原生关联查询语句
  • 原文地址:https://www.cnblogs.com/sea-stream/p/10988122.html
Copyright © 2020-2023  润新知