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=):
- 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(, 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=-)
- 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()
keras 模型简介的更多相关文章
- Sequelize 关系模型简介
Sequelize 关系模型简介 先介绍一下本文用到的术语: 源: 调用 sequelize 中关系方法的调用者 目标: 调用 sequelize 中关系方法中的参数 比如, User.hasOne( ...
- Keras官方中文文档:关于Keras模型
关于Keras模型 Keras有两种类型的模型,序贯模型(Sequential)和函数式模型(Model),函数式模型应用更为广泛,序贯模型是函数式模型的一种特殊情况. 两类模型有一些方法是相同的: ...
- jvm-垃圾回收gc简介+jvm内存模型简介
gc是jvm自动执行的,自动清除jvm内存垃圾,无须人为干涉,虽然方便了程序员的开发,但同时增加了开发人员对内存的不可控性. 1.jvm内存模型简介 jvm是在计算机系统上又虚拟出来的一个伪计算机系统 ...
- 在Keras模型中one-hot编码,Embedding层,使用预训练的词向量/处理图片
最近看了吴恩达老师的深度学习课程,又看了python深度学习这本书,对深度学习有了大概的了解,但是在实战的时候, 还是会有一些细枝末节没有完全弄懂,这篇文章就用来总结一下用keras实现深度学习算法的 ...
- 将keras模型在django中应用时出现的小问题——ValueError: Tensor Tensor("dense_2/Softmax:0", shape=(?, 8), dtype=float32) is not an element of this graph.
本文原出处(感谢作者提供):https://zhuanlan.zhihu.com/p/27101000 将keras模型在django中应用时出现的小问题 王岳王院长 10 个月前 keras 一个做 ...
- keras模型可视化及解决'Failed to import pydot'问题
1.keras模型可视化 keras.utils.vis_utils模块提供了画出Keras模型的函数(利用graphviz) 该函数将画出模型结构图,并保存成图片: from keras.utils ...
- Sklearn,TensorFlow,keras模型保存与读取
一.sklearn模型保存与读取 1.保存 from sklearn.externals import joblib from sklearn import svm X = [[0, 0], [1, ...
- CSS box-flex属性,然后弹性盒子模型简介
今天做项目的时候发现一个css3的新属性flex 一.什么是flex 它的作用是能够按照设置好的规则来排列容器内的项目,而不必去计算每一个项目的宽度和边距.甚至是在容器的大小发生改变的时候,都可以重新 ...
- 转:概率主题模型简介 --- ---David M. Blei所写的《Introduction to Probabilistic Topic Models》的译文
概率主题模型简介 Introduction to Probabilistic Topic Models 转:http://www.cnblogs.com/siegfang/archive/2 ...
随机推荐
- IntelliJ IDEA 最新版 2019.2.4 激活 (持续更新)(含windows和Mac)
IntelliJ IDEA 最新版 2019.2.4 激活 最新版激活包下载地址: 百度网盘 提取码: i28c 转载: Neo Peng Jetbrains系列产品 激活方式 同下述方式相同,只需要 ...
- (九)SpringBoot之错误处理
一.错误处理方法 1.Spring Boot 将所有的错误默认映射到/error, 实现ErrorController 2.添加自定义的错误页面 二.Spring Boot 将所有的错误默认映射到 ...
- Junit 学习1 junit的简单使用
package junit; import java.sql.Connection; import java.sql.SQLException; import org.junit.Test; impo ...
- 前端开发 Vue -2npm
npm介绍 说明:npm(node package manager)是nodejs的包管理器,用于node插件管理(包括安装.卸载.管理依赖等) 使用npm安装插件:命令提示符执行npm instal ...
- 数组的新API
话不多数,直接上代码: 第一个输出1,2,3,4,5 在函数体中第一个console依次输出1,2,3,4,5 然后再将里面的内容逐个+1,所以第二个输出值为:2,3,4,5,6 但是这都不会改变原数 ...
- Vue路由相关配置
什么是路由? 1.在以前页面跳转使用的是超链接a标签或者js location.href,而路由是跳转切换组件的跳转方式 2.路由就是监听url的改变并提供相对应的组件用于展示 3.vue-route ...
- ios编程时常见问题总结
(1)在UIViewController里面使用了timer,会使得controller被retain,因此在viewdisapper时应将timer置为nil,否则controller的deallo ...
- Qt 4.8.5 + MinGW32 + Qt creater 安装
Qt 4.8.5 + MinGW32 + Qt creater 安装 下载文件 文件版本 Qt 4.8.5 MinGW 0.4.4 Qt Creator 2.8或2.8.1 gdb-7.4-MinGW ...
- 远程连接服务器数据库报错:Host ‘XXXXXX’ is blocked because of many connection errors
原文:https://blog.csdn.net/li_li_lin/article/details/72764683 一.我遇到的问题描述 使用Navicat for mysql连接公司的服务器数据 ...
- Oracle自动化安装脚本-part03-亲试ok
此为 软件包配置文件 software.conf [CentOS6] binutils-2.20.51.0.2-5.11.el6 (x86_64) compat-libcap1-1.10-1 (x8 ...