kears一些常用的函数笔记

简介: kears一些常用的函数笔记

正则化



L1 L2正则项的使用


`kernel_regularizer`:施加在权重上的正则项,为`keras.regularizer.Regularizer`对象
    `bias_regularizer`:施加在偏置向量上的正则项,为`keras.regularizer.Regularizer`对象
`activity_regularizer`:施加在输出上的正则项,为`keras.regularizer.Regularizer`对象
L1正则化可以产生稀疏权重矩阵,即大部分w为0,只有少数w非0,可以用于特征选择
L2正则化可以防止模型过拟合 是个方差
keras.regularizers.l1(0.0003)
keras.regularizers.l2(0.0003)
keras.regularizers.l1_l2(0.0003)
Dense(units=10,bias_initializer='zeros',activation='softmax',kernel_regularizer=keras.regularizers.l2(0.0003)
复制代码


dropout 正则使用


主要是剔除一些神经元
model.add(Dropout(0.25))
复制代码


初始化权重


API文档


通常关键字为 kernel_initializer bias_initializer
kernel_initializer默认值为'glorot_uniform',对应的实例是keras.initializers.glorot_uniform(seed=None)
bias_initializer默认值为'zeros',对应的实例是keras.initializers.Zeros()
model.add(Dense(64, kernel_initializer='random_uniform', bias_initializer='zeros'))
均匀分布初始化 *minval:均匀分布下边界* maxval:均匀分布上边界 * seed:随机数种子
keras.initializers.RandomUniform(minval=-0.05, maxval=0.05, seed=None)
截尾高斯分布初始化,该初始化方法与RandomNormal类似,但位于均值两个标准差以外的数据将会被丢弃并重新生成,形成截尾分布。该分布是神经网络权重和滤波器的推荐初始化方法。
keras.initializers.TruncatedNormal(mean=0.0, stddev=0.05, seed=None)
复制代码


学习率



调整学习率需要在model.fit中的callbacks回调函数中实现。

LearningRateScheduler


schedule:函数,该函数以epoch号为参数(从0算起的整数),返回一个新学习率(浮点数)
keras.callbacks.LearningRateScheduler(schedule)
复制代码


ReduceLROnPlateau


-   monitor:被监测的量
-   factor:每次减少学习率的因子,学习率将以`lr = lr*factor`的形式被减少
-   patience:当patience个epoch过去而模型性能不提升时,学习率减少的动作会被触发
-   mode:‘auto’,‘min’,‘max’之一,在`min`模式下,如果检测值触发学习率减少。在`max`模式下,当检测值不再上升则触发学习率减少。
-   epsilon:阈值,用来确定是否进入检测值的“平原区”
-   cooldown:学习率减少后,会经过cooldown个epoch才重新进行正常操作
-   min_lr:学习率的下限
reduce_lr = ReduceLROnPlateau(monitor='val_loss', factor=0.2, patience=5, min_lr=0.001) 
model.fit(X_train, Y_train, callbacks=[reduce_lr])
复制代码


Optimizers 优化器


Optimizers API


keras 中也有 SGD,RMSprop,Adagrad,Adadelta,Adam,Adamax,Nadam 等
例子learning_rate 学习率
sgd = SGD(learning_rate=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='categorical_crossentropy', optimizer=sgd,metrics=['accuracy'])
复制代码


**如果数据是稀疏的,就用自适用方法,即 Adagrad, Adadelta, RMSprop, Adam。**
**RMSprop, Adadelta, Adam 在很多情况下的效果是相似的。**
**Adam 就是在 RMSprop 的基础上加了 bias-correction 和 momentum,**
**随着梯度变的稀疏,Adam 比 RMSprop 效果会好。**
整体来讲,**Adam 是最好的选择**。
很多论文里都会用 SGD,没有 momentum 等。**SGD 虽然能达到极小值,但是比其它算法用的时间长,而且可能会被困在鞍点**。
如果需要更快的收敛,或者是训练更深更复杂的神经网络,需要用一种自适应的算法


相关文章
|
机器学习/深度学习 PyTorch TensorFlow
Pytorch学习笔记(二):nn.Conv2d()函数详解
这篇文章是关于PyTorch中nn.Conv2d函数的详解,包括其函数语法、参数解释、具体代码示例以及与其他维度卷积函数的区别。
2474 0
Pytorch学习笔记(二):nn.Conv2d()函数详解
|
机器学习/深度学习 自然语言处理 PyTorch
pytorch实战---IMDB情感分析
pytorch实战---IMDB情感分析
pytorch实战---IMDB情感分析
|
机器学习/深度学习 数据采集 算法
Python基于OpenCV和卷积神经网络CNN进行车牌号码识别项目实战
Python基于OpenCV和卷积神经网络CNN进行车牌号码识别项目实战
|
机器学习/深度学习 TensorFlow 算法框架/工具
TensorFlow的保存与加载模型
【4月更文挑战第17天】本文介绍了TensorFlow中模型的保存与加载。保存模型能节省训练时间,便于部署和复用。在TensorFlow中,可使用`save_model_to_hdf5`保存模型结构,`save_weights`保存权重,或转换为SavedModel格式。加载时,通过`load_model`恢复结构,`load_weights`加载权重。注意模型结构一致性、环境依赖及自定义层的兼容性问题。正确保存和加载能有效利用模型资源,提升效率和准确性。
|
XML 缓存 安全
R-CNN:使用自己的数据训练 Faster R-CNN 的 VGG-16 模型
学习 Faster R-CNN 模型,为了了解其中网络的结构,利用 PascalVOC 数据集,来扩展网络的类别(原来有 20 类)。过程分为:数据准备 ==> 相关文件修改 ==> 训练网络 ==> 测试
616 0
|
机器学习/深度学习 算法 数据可视化
目标检测算法——Faster R-CNN
目标检测算法——Faster R-CNN
384 0
目标检测算法——Faster R-CNN
|
存储 数据采集 Kubernetes
让容器跑得更快:CPU Burst 技术实践
让人讨厌的 CPU 限流影响容器运行,有时人们不得不牺牲容器部署密度来避免 CPU 限流出现。我们设计的 CPU Burst 技术既能保证容器运行服务质量,又不降低容器部署密度。CPU Burst 特性已合入 Linux 5.14,Anolis OS 8.2、Alibaba Cloud Linux2、Alibaba Cloud Linux3 也都支持 CPU Burst 特性。
让容器跑得更快:CPU Burst 技术实践
|
Linux
再生龙(CloneZilloa)使用指南
再生龙(CloneZilloa)使用指南
734 0
再生龙(CloneZilloa)使用指南
|
人工智能 自然语言处理 搜索推荐
《技术揭秘》KAN-TTS精品人声定制产品介绍
TTS(Text-To-Speech 语音合成) 是AI领域一颗小而美的“珍珠”,有了它,才让智能应用和智能硬件长出“嘴巴”活起来。作为语音解决方案的发声环节,它既可以像你现实中常见到的——主持人播报新闻、教师授课、明星导航。也可以定制特色人声,用或奇趣、或软萌、或激越的声音来读小说,朗诵诗歌,解说视频等等。本文将为大家介绍基于阿里最新 KAN-TTS语音合成技术的精品人声定制产品。
《技术揭秘》KAN-TTS精品人声定制产品介绍
|
数据采集 运维 监控
阿里云心选!「DataFlux」云时代的数据监控横空出世
IT发展以来,从个人电脑到云计算,唯一没有缺席的一个技术就是监控,当我们打开Windows任务管理器的时候看到CPU、内存就是监控,到我们今天大部分工程师打开云的控制台,大部分情况也是想要看对应产品的监控。
2314 0
阿里云心选!「DataFlux」云时代的数据监控横空出世