内容简介:Keras的核心数据结构是“模型”,模型是一种组织网络层的方式。Keras中主要的模型是Sequential模型,Sequential是一系列网络层按顺序构成的栈。你也可以查看泛型模型来学习建立更复杂的模型。模块需导入包:激活函数有如下几种类型可选:
Keras的核心数据结构是“模型”,模型是一种组织网络层的方式。Keras中主要的模型是Sequential模型,Sequential是一系列网络层按顺序构成的栈。你也可以查看泛型模型来学习建立更复杂的模型。
Keras中几个重要函数用法
模块需导入包:
from keras.models import Sequential from keras.layers import Dense, Dropout, Activation, Flatten from keras.layers.convolutional import Conv2D from keras.layers.pooling import MaxPooling2D from keras.layers import Embedding, LSTM from keras.utils import np_utils from keras.datasets import mnist
激活函数有如下几种类型可选:
softmax、elu、softplus、softsign、relu、tanh、sigmoid、hard_sigmoid、linear
Dense(全连接层)
Dense层(https://keras-cn.readthedocs.io/en/latest/layers/core_layer/)
keras.layers.core.Dense ( units, activation=None, use_bias=True, kernel_initializer='glorot_uniform', bias_initializer='zeros', kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, bias_constraint=None )
units:大于0的整数,代表该层的输出维度。 activation:激活函数,为预定义的激活函数名(参考激活函数),或逐元素(element-wise)的Theano函数。如果不指定该参数,将不会使用任何激活函数(即使用线性激活函数:a(x)=x) usebias: 布尔值,是否使用偏置项 kernelinitializer:权值初始化方法,为预定义初始化方法名的字符串,或用于初始化权重的初始化器。参考initializers bias_initializer:权值初始化方法,为预定义初始化方法名的字符串,或用于初始化权重的初始化器。参考initializers
Keras模型保存
我们不推荐使用pickle或cPickle来保存Keras模型。
你可以使用model.save(filepath)将Keras模型和权重保存在一个HDF5文件中,该文件将包含:
-
模型的结构,以便重构该模型
-
模型的权重
-
训练配置(损失函数,优化器等)
-
优化器的状态,以便于从上次训练中断的地方开始
使用keras.models.load_model(filepath)来重新实例化你的模型,如果文件中存储了训练配置的话,该函数还会同时完成模型的编译
例子:
from keras.models import load_model model.save('my_model.h5') # creates a HDF5 file 'my_model.h5' del model # deletes the existing model # returns a compiled model # identical to the previous one model = load_model('my_model.h5')
如果你只是希望保存模型的结构,而不包含其权重或配置信息,可以使用:
# save as JSON json_string = model.to_json() # save as YAML yaml_string = model.to_yaml()
这项操作将把模型序列化为json或yaml文件,这些文件对人而言也是友好的,如果需要的话你甚至可以手动打开这些文件并进行编辑。
当然,你也可以从保存好的json文件或yaml文件中载入模型:
# model reconstruction from JSON: from keras.models import model_from_json model = model_from_json(json_string) # model reconstruction from YAML model = model_from_yaml(yaml_string)
如果需要保存模型的权重,可通过下面的代码利用HDF5进行保存。注意,在使用前需要确保你已安装了HDF5和其 Python 库h5py
model.save_weights('my_model_weights.h5') 如果你需要在代码中初始化一个完全相同的模型,请使用: model.load_weights('my_model_weights.h5')
如果你需要加载权重到不同的网络结构(有些层一样)中,例如fine-tune或transfer-learning,你可以通过层名字来加载模型:
model.load_weights('my_model_weights.h5', by_name=True)
例如:
""" 假如原模型为: model = Sequential() model.add(Dense(2, input_dim=3, name="dense_1")) model.add(Dense(3, name="dense_2")) ... model.save_weights(fname) """ # new model model = Sequential() model.add(Dense(2, input_dim=3, name="dense_1")) # will be loaded model.add(Dense(10, name="new_dense")) # will not be loaded # load weights from first model; will only affect the first layer, dense_1. model.load_weights(fname, by_name=True)
可视化
使用方式
keras.utils.vis_utils模块提供了画出Keras模型的函数(利用graphviz)
该函数将画出模型结构图,并保存成图片:
from keras.utils import plot_model plot_model(model, to_file='model.png')
具体可参考:可视化visualization(https://keras-cn.readthedocs.io/en/latest/other/visualization/)
解决办法
-
首先,安装pip安装pygot和graphviz之后,运行上面的可视化代码仍然报错
-
查询说是Windows下面只能采用安装包的方式进行安装,不能pip安装.....
最终,费了很大的周折之后,终于找到解决办法:
-
首先,安装graphviz(官方下载网址:https://graphviz.gitlab.io/_pages/Download/Download_windows.html),然后在环境变量里面配置其路径(好像也没有什么用)
-
然后在代码里面设置如下:
import os os.environ["PATH"] += os.pathsep + 'D:/install/Program Files (x86)/Graphviz2.38/bin/' plot_model(model, to_file='model.png', show_shapes=True, show_layer_names=True)
OK,终于成功了。期间还涉及到说按照graphviz->grapphviz软件本身->pydot的顺序按照软件什么的,但是问题并没有解决,还是得在程序中引入地址。
参考文献
-
Keras中文文档:https://keras-cn.readthedocs.io/en/latest/for_beginners/concepts/
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Java构造函数与普通函数用法详解
- Oracle 中 decode 函数用法
- Oracle中的translate函数和replace函数的用法详解
- Oracle 中Contains 函数的用法
- Python map、reduce函数用法
- 浅谈CSS calc()函数的用法
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Developer's Guide to Social Programming
Mark D. Hawker / Addison-Wesley Professional / 2010-8-25 / USD 39.99
In The Developer's Guide to Social Programming, Mark Hawker shows developers how to build applications that integrate with the major social networking sites. Unlike competitive books that focus on a s......一起来看看 《Developer's Guide to Social Programming》 这本书的介绍吧!