文章目录

  • Keras源码结构
    • keras搭建网络和运行的一般过程
    • Keras源码文件结构
    • Keras核心类
    • 卷积层
    • 优化函数
    • 训练过程中的回调函数
    • 损失函数
    • 权重初始化方法

Keras源码结构

keras源码非常简洁,学习源码可以对深度学习整体框架有更清楚的认识。通过对keras源码的阅读,我简单总结了一些笔记,类似于大纲一样的东西。具体的实现细节和步骤,直接看源码会更容易理解。

keras搭建网络和运行的一般过程

model=Sequential() model=Model() 建立模型
model.add() 模型编辑
model.compile() 模型编译
model.fit() 模型拟合
model.evaluate() 模型估计
model.save()

实际使用时,增加下面功能:
model.summary()
plot_model(model,””)
fit()函数增加callbacks实现模型自动保存,早期停止,学习率变化

fit
是用来对训练集和标签直接训练,训练过程中不再对训练集和标签做处理。
fit_generator
需要对训练集和标签做处理,然后再训练。这种处理包括:简单数据集的数据增强;复杂任务的样本处理。相比fit,增加了线程数的设置等。

Keras源码文件结构

Keras核心类

主要类 成员函数 目录 功能
Layer(object) get_config、get_weights、set_weight keras/engine/base_layer.py 基础类
InputLayer(Layer) keras/engine/input_layer.py
Dense(Layer) Dropout(Layer) Activation(Layer) Flatten(Layer) keras/layers/core.py
_Pooling1D/2D/3D(Layer) _GlobalPooling1D/2D/3D(Layer) AveragePooling2D(_Pooling2D) MaxPooling2D(_Pooling2D) compute_output_shape _pooling_function get_config call keras/layers/pooling.py 保护类
重载_pooling_function
BatchNormalization(Layer) build、call、get_config、compute_output_shape keras/layers/normalization.py
Network(Layer) keras/engine/network.py
Model(Network) compile、fit、evaluate、prediction train/test/predict fit/evaluate/predict_generator
Sequential(Model) layers、model、add、pop、build、 predict_proba、predict_classes

卷积层

主要类 成员函数 目录 功能
_Conv(Layer)_Cropping(Layer) _UpSampling(Layer) _ZeroPadding(Layer) _SeparableConv(_Conv)Conv1D/2D/3D(_Conv) Conv2D/3DTranspose(Conv2D) Cropping1D/2D/3D(_Cropping)UpSampling1D/2D/3D(_UpSampling) ZeroPadding1D/2D/3D(_ZeroPadding) SeparableConv1D/2D(_SeparableConv) Conv1D/2D/3DTranspose(Conv1D/2D/3D) get_config keras/layers/convolutional.py

优化函数

主要类 成员函数 目录 功能
Optimizer(object) get_updates get_gradients get/set_weights get_config from_config keras/optimizers.py
Adagrad(Optimizer) 重载get_updates、get_config
SGD(Optimizer)
RMSprop(Optimizer)
Adadelta(Optimizer)
Adam(Optimizer)
Adamax(Optimizer)
Nadam(Optimizer)
TFOptimizer(Optimizer)

训练过程中的回调函数

实现训练超参数的更改、性能度量、记录等功能

callbacks 功能
Callback(object) on_epoch_begin/end on_batch_begin/end on_train_begin/end
CallbackList(object)
LambdaCallback(Callback) 自定义功能
BaseLogger(Callback)
CSVLogger(Callback) 将每个epochs的结果保存到表格
ReduceLROnPlateau(Callback) 当性能不在提升时改变学习率
TensorBoard(Callback)
LearningRateScheduler(Callback) 学习率按照设定规则变化
TerminateOnNaN(Callback) 当损失变成NaN时停止
ProgbarLogger(Callback) 输出度量metrics
History(Callback) 保存历史记录
ModelCheckpoint(Callback) 每隔epochs保存模型
EarlyStopping(Callback) 当监视的性能指标不再提升时停止
RemoteMonitor(Callback)

损失函数

keras损失函数 两个参数:y(预测)、y_(真实)
mean_squared_error 平均平方损失
mean_absolute_error
mean_absolute_percentage_error 平均百分比损失mean(|y-y_hat|/y_hat)
mean_squared_logarithmic_error 平均对数平方损失
squared_hinge
squared_hinge
hinge 铰链损失,最大间隔分类(SVM)L=max(0,1-y*y_)
categorical_hinge
logcosh 预测误差的双曲余弦的对数
categorical_crossentropy 交叉熵
sparse_categorical_crossentropy
binary_crossentropy
kullback_leibler_divergence K-L散度,相对熵,信息增益
poisson
cosine_proximity

权重初始化方法

初始化类or函数 参数or功能
Initializer(object)
Zeros(Initializer)、Ones(Initializer)、Constant(Initializer)
RandomNormal(Initializer) mean、stddev
RandomUniform(Initializer) minval、maxval
TruncatedNormal(Initializer) mean、stddev 偏离均值两倍标准差的值被丢弃【推荐】
VarianceScaling(Initializer) scale、mode、distribution,该初始化方法能够自适应目标张量的shape
Orthogonal(Initializer) 随机初始化一个正交矩阵
Identity(Initializer) 随机初始化一个单位矩阵
函数
lecun_uniform(seed=None) LeCun均匀分布 [-sqrt(3 / fan_in), sqrt(3 / fan_in)]
lecun_normal(seed=None) mean=0, stddev = sqrt(1 / fan_in)
glorot_normal(seed=None) mean=0, stddev=sqrt(2 / (fan_in + fan_out))
glorot_uniform(seed=None) [-limit, limit], limit=sqrt(6 / (fan_in + fan_out))
he_normal(seed=None) mean=0, stddev=sqrt(2 / fan_in)
he_uniform(seed=None) [-sqrt(6 / fan_in), sqrt(6 / fan_in)]

Keras源码学习笔记相关推荐

  1. Java多线程之JUC包:Semaphore源码学习笔记

    若有不正之处请多多谅解,并欢迎批评指正. 请尊重作者劳动成果,转载请标明原文链接: http://www.cnblogs.com/go2sea/p/5625536.html Semaphore是JUC ...

  2. RocketMQ 源码学习笔记 Producer 是怎么将消息发送至 Broker 的?

    RocketMQ 源码学习笔记 Producer 是怎么将消息发送至 Broker 的? 文章目录 RocketMQ 源码学习笔记 Producer 是怎么将消息发送至 Broker 的? 前言 项目 ...

  3. Vuex 4源码学习笔记 - 通过Vuex源码学习E2E测试(十一)

    在上一篇笔记中:Vuex 4源码学习笔记 - 做好changelog更新日志很重要(十) 我们学到了通过conventional-changelog来生成项目的Changelog更新日志,通过更新日志 ...

  4. Vuex 4源码学习笔记 - Vuex是怎么与Vue结合?(三)

    在上一篇笔记中:Vuex源码学习笔记 - Vuex开发运行流程(二) 我们通过运行npm run dev命令来启动webpack,来开发Vuex,并在Vuex的createStore函数中添加了第一个 ...

  5. jquery源码学习笔记三:jQuery工厂剖析

    jquery源码学习笔记二:jQuery工厂 jquery源码学习笔记一:总体结构 上两篇说过,query的核心是一个jQuery工厂.其代码如下 function( window, noGlobal ...

  6. 雷神FFMpeg源码学习笔记

    雷神FFMpeg源码学习笔记 文章目录 雷神FFMpeg源码学习笔记 读取编码并依据编码初始化内容结构 每一帧的视频解码处理 读取编码并依据编码初始化内容结构 在开始编解码视频的时候首先第一步需要注册 ...

  7. Apache log4j-1.2.17源码学习笔记

    (1)Apache log4j-1.2.17源码学习笔记 http://blog.csdn.net/zilong_zilong/article/details/78715500 (2)Apache l ...

  8. PHP Yac cache 源码学习笔记

    YAC 源码学习笔记 本文地址 http://blog.csdn.net/fanhengguang_php/article/details/54863955 config.m4 检测系统共享内存支持情 ...

  9. Vuex 4源码学习笔记 - 通过dispatch一步步来掌握Vuex整个数据流(五)

    在上一篇笔记中:Vuex 4源码学习笔记 - Store 构造函数都干了什么(四) 我们通过查看Store 构造函数的源代码可以看到主要做了三件事情: 初始化一些内部变量以外 执行installMod ...

最新文章

  1. ubuntu14 安装JDK
  2. python中eof啥意思,什么是Python的完美对应“而不是EOF”
  3. 组织软件测试中应当避免的几个常见现象
  4. jquery : 动态构建表单自动提交请求
  5. python的序列类型及其特点_Fluent Python 笔记——序列类型及其丰富的操作
  6. 自定义键盘码_无线+矮轴≤299?ikbc S200 2.4G 机械键盘测评
  7. 交互进CMU后可以学计算机吗,转专业必看!申请计算机的先修课要求,以CMU为例...
  8. 数组指针和指针数组的区别(转)
  9. Funcode实现打飞虫1
  10. Java基础 | 专业排行榜前7的Java代码审计工具
  11. LQ-1600K打印机色带传动故障分析
  12. MFC:应用程序无法正常启动(0xc0150002)
  13. 设计原则Python
  14. 我的物联网大学【第五章】:沉默不会爆发,沉默一定会灭亡!
  15. 初生牛犊不怕虎:年轻人的成长之路
  16. 高级php工程师需要掌握的知识点
  17. Missionaries from the global south try to save the godless West
  18. spring.main.allow-bean-definition-overriding = true
  19. 小木虫为什么会有不好的用户体验?
  20. USB2.0转TTL串口硬件实现

热门文章

  1. C++11 类型转换
  2. 西门子博途系列学习笔记SCL(三)______自由口通讯(RS485轮询程序)
  3. 手机的光学变焦,实际上是不同焦距摄像头合成的
  4. 我把视频变成链接_如何把小红书视频保存到电脑上
  5. 如何将doc格式文档转换为txt的文档
  6. opencv 和 matplot 展示图片
  7. 高情商沟通力 读后感
  8. 索尼koov机器人比赛_索尼KOOV挑战赛亮相第五届河北省中小学教育机器人暨创客竞赛...
  9. Android异常崩溃Crash重启方案
  10. 国内可用的Internet时间同步服务器地址