keras中文文档 keras

keras和tensorflow的关系Keras作为前端,TensorFlow作为后端 。
1.一直在用keras,说点个人感受 。
2.和TensorFlow对应的是Theano,Torch,而Caffe专精于图像处理 。3.Keras是一个由Python编写的开源人工神经网络库,可以作为Tensorflow、Microsoft-CNTK和Theano的高阶应用程序接口 。

keras中文文档 keras

文章插图
Keras模型导入报错??
??在用Keras的时候,保存模型,再次导入模型的时候,出现了如下报错:
??开始以为是模型保存的问题,为了解决此类报错,尝试过各种方法,比如对比了一下model.save()和model.save_weights()的区别,这两个区别主要在于保存从区别,具体如下:
??鉴于此,今后保存模型的话,如果储存没有问题,用model.save()将所有都保存下来 。
??通过前面尝试各种的模型保存方式,发现我们的方式没有什么问题,然后再在网上查询问题,结果发现可能是由于h5py版本的问题,具体的是我们安装keras的时候,自动安装了3.5.0 。
?? 在前人的介绍中,这里应该安装2.10.0,然后我们这里测试了一下,结果完美的解决了问题 。
Keras快速构建神经网络模型 用Keras搭建神经网络的步骤:
深度学习框架Keras——像搭积木般构建神经网络,主要分为7个部分,每个部分只需要几个keras API函数就能实现,用户即可像搭积木般一层层构建神经网络模型 。
1.创建模型 Create model
2.添加层级 Add Layer
3.模型编译 Compile
4.数据填充 Fit
5.模型评估 Evaluate
6.模型预测 Predict
7.模型保存 Save model
下面章节会对每一部分具体来介绍 。。。
Keras 中主要有三类模型:Sequential model, Functional model, Subclass model
在开始创建模型之前,首先需要引入tensorflow和keras模块,然后再创建一个Sequential model
Sequential API定义如下:
layers参数可以为空,然后通过add method向模型中添加layer,相对应的通过pop method移除模型中layer 。
创建Function API模型,可以调用Keras.Model来指定多输入多数出 。
Keras.Model定义:
Layers是神经网络基本构建块 。一个Layer包含了tensor-in/tensor-out的计算方法和一些状态,并保存在TensorFlow变量中(即layers的权重weights) 。
Layers主要分为6个类别,基础层,核心层,卷基层,池化层,循环层,融合层 。
对派生类的实现可以用以下方法:
**init (): 定义layer的属性,创建layer的静态变量 。
** build(self, input_shape): 创建依赖于输入的变量,可以调用add_weight() 。
** call(self, *args, **kwargs): 在确保已调用build()之后,在 call 中调用 。
** get_config(self): 返回包含用于初始化此层的配置的字典类型 。
创建SimpleDense派生类,在build()函数里添加trainable weights 。实现y=input*w +b
结果输出:
创建ComputeSum派生类,在 init 函数里添加 non-trainable weights 。实现输入矩阵沿轴0元素相加后,x=x+self.total
结果输出:
核心层是最常用的层,涉及到数据的转换和处理的时候都会用到这些层 。
Dense层就是所谓的全连接神经网络层,简称全连接层 。全连接层中的每个神经元与其前一层的所有神经元进行全连接 。
Dense 实现以下操作: output = activation(dot(input, kernel) + bias) 其中 activation 是按逐个元素计算的激活函数,kernel 是由网络层创建的权值矩阵,以及 bias 是其创建的偏置向量 (只在 use_bias 为 True 时才有用) 。
将激活函数应用于输出 。输入信号进入神经元后进行的运算处理 。
sigmoid、tanh、ReLU、softplus的对比曲线如下图所示:
激活函数可以通过设置单独的激活层Activation实现,也可以在构造层对象时通过传递 activation 参数实现:
Dropout在训练中每次更新时,将输入单元的按比率随机设置为0,这有助于防止过拟合 。未设置为0的输入将按1 /(1-rate)放大,以使所有输入的总和不变 。
请注意,仅当训练设置为True时才应用Dropout层,以便在推理过程中不会丢弃任何值 。使用model.fit时,训练将自动适当地设置为True 。
将输入展平 。不影响批量大小 。注意:如果输入的形状是(batch,)没有特征轴,则展平会增加通道尺寸,而输出的形状是(batch, 1) 。
将输入重新调整为特定的尺寸
将任意表达式封装为Layer对象 。在Lambda层,以便在构造模型时可以使用任意TensorFlow函数 。Lambda层最适合简单操作或快速实验 。Lambda层是通过序列化Python字节码来保存的 。

秒懂生活扩展阅读