Python人工智能深度学习模型训练经验总结
目录
- 一、假如训练集表现不好
- 1.尝试新的激活函数
- 2.自适应学习率
- ①Adagrad
- ②RMSProp
- ③ Momentum
- ④Adam
- 二、在测试集上效果不好
- 1.提前停止
- 2.正则化
- 3.Dropout
一、假如训练集表现不好
1.尝试新的激活函数
ReLU:Rectified Linear Unit
图像如下图所示:当z<0时,a = 0, 当z>0时,a = z,也就是说这个激活函数是对输入进行线性转换。使用这个激活函数,由于有0的存在,计算之后会删除掉一些神经元,使得神经网络变窄。
该函数也有其他变体,如下图所示,主要是对于z小于0的时候,对应
Maxout:以上几种函数的一般形式
简单来说就是谁大输出谁,通过Maxout可以自己学习激活函数。当给出的参数不同的时候,可以得到上面所描述的各类函数。如下图所示,当输入给1个计算单元时,得到蓝色的线,假如第二个计算单元参数均为0,则是X轴上的一条线,那么在这两个之中取大的那个,就是ReLU;当第二个计算单元参数不为0的时候,就可以得到其他形式的结果。
2.自适应学习率
①Adagrad
Adagrad是使用前面的梯度进行平方和再开方,作为计算梯度时系数的一部分。
②RMSProp
是Adagrad的进阶版,在Adagrad中,是使用了前面所有的梯度平方和再开方,这个系数中没有考虑当前的梯度。在RMSProp中,是考虑了现在的梯度,也对其进行平方,并对两项进行一个权重的分配。
③ Momentum
加入动量的梯度下降
下图中,v就是上一次的方向。在计算本次方向的时候,加入lambda倍的上一次的方向。其实v就是过去算出来的所有的梯度的总和。
④Adam
将RMSProp和Momentum结合
二、在测试集上效果不好
1.提前停止
通过交叉验证集,提前停止训练
2.正则化
和其他的算法正则化方式一致,有L1和L2正则,此处不再详细描述。
3.Dropout
每次训练的时候,都以p%的几率去掉一些神经元以及输入值。得到如下图所示的更瘦一些的神经网络。直接去训练这个神经网络。下一次训练的时候,对整个网络重新进行采样。(类似于随机森林)
在测试的时候不进行dropout,如果训练的时候的dropout几率是p%,那么在测试集上,所有的权重都乘上(1-p)%
以上就是Python人工智能深度学习模型训练经验总结的详细内容,更多关于Python人工智能模型训练经验的资料请关注我们其它相关文章!
相关推荐
-
人工智能机器学习常用算法总结及各个常用算法精确率对比
本文讲解了机器学习常用算法总结和各个常用分类算法精确率对比.收集了现在比较热门的TensorFlow.Sklearn,借鉴了Github和一些国内外的文章. 机器学习的知识树,这个图片是Github上的,有兴趣的可以自己去看一下: 地址:https://github.com/trekhleb/homemade-machine-learning 简单的翻译一下这个树: 英文 中文 Machine Learning 机器学习 Supervised Learning 监督学习 Unsupervised
-
python人工智能深度学习入门逻辑回归限制
目录 1.逻辑回归的限制 2.深度学习的引入 3.深度学习的计算方式 4.神经网络的损失函数 1.逻辑回归的限制 逻辑回归分类的时候,是把线性的函数输入进sigmoid函数进行转换,后进行分类,会在图上画出一条分类的直线,但像下图这种情况,无论怎么画,一条直线都不可能将其完全分开. 但假如我们可以对输入的特征进行一个转换,便有可能完美分类.比如: 创造一个新的特征x1:到(0,0)的距离,另一个x2:到(1,1)的距离.这样可以计算出四个点所对应的新特征,画到坐标系上如以下右图所示.这样转换之后
-
python深度学习人工智能BackPropagation链式法则
目录 1.链式法则 2.前向传播 3.后向传播 4.计算方式整理 5.总结 1.链式法则 根据以前的知识,如果我们需要寻找到目标参数的值的话,我们需要先给定一个初值,然后通过梯度下降,不断对其更新,直到最终的损失值最小即可.而其中最关键的一环,就是梯度下降的时候,需要的梯度,也就是需要求最终的损失函数对参数的导数. 如下图,假设有一个神经元,是输入层,有2个数据,参数分别是w1和w2,偏置项为b,那么我们需要把这些参数组合成一个函数z,然后将其输入到sigmoid函数中,便可得到该神经元的输出结
-
python人工智能深度学习算法优化
目录 1.SGD 2.SGDM 3.Adam 4.Adagrad 5.RMSProp 6.NAG 1.SGD 随机梯度下降 随机梯度下降和其他的梯度下降主要区别,在于SGD每次只使用一个数据样本,去计算损失函数,求梯度,更新参数.这种方法的计算速度快,但是下降的速度慢,可能会在最低处两边震荡,停留在局部最优. 2.SGDM SGM with Momentum:动量梯度下降 动量梯度下降,在进行参数更新之前,会对之前的梯度信息,进行指数加权平均,然后使用加权平均之后的梯度,来代替原梯度,进行参数的
-
浅谈机器学习需要的了解的十大算法
毫无疑问,近些年机器学习和人工智能领域受到了越来越多的关注.随着大数据成为当下工业界最火爆的技术趋势,机器学习也借助大数据在预测和推荐方面取得了惊人的成绩.比较有名的机器学习案例包括Netflix根据用户历史浏览行为给用户推荐电影,亚马逊基于用户的历史购买行为来推荐图书. 那么,如果你想要学习机器学习的算法,该如何入门呢?就我而言,我的入门课程是在哥本哈根留学时选修的人工智能课程.老师是丹麦科技大学应用数学和计算机专业的全职教授,他的研究方向是逻辑学和人工智能,主要是用逻辑学的方法来建模.课程包
-
Python人工智能深度学习CNN
目录 1.CNN概述 2.卷积层 3.池化层 4.全连层 1.CNN概述 CNN的整体思想,就是对图片进行下采样,让一个函数只学一个图的一部分,这样便得到少但是更有效的特征,最后通过全连接神经网络对结果进行输出. 整体架构如下: 输入图片 →卷积:得到特征图(激活图) →ReLU:去除负值 →池化:缩小数据量同时保留最有效特征 (以上步骤可多次进行) →输入全连接神经网络 2.卷积层 CNN-Convolution 卷积核(或者被称为kernel, filter, neuron)是要被学出来的,
-
Python人工智能深度学习模型训练经验总结
目录 一.假如训练集表现不好 1.尝试新的激活函数 2.自适应学习率 ①Adagrad ②RMSProp ③ Momentum ④Adam 二.在测试集上效果不好 1.提前停止 2.正则化 3.Dropout 一.假如训练集表现不好 1.尝试新的激活函数 ReLU:Rectified Linear Unit 图像如下图所示:当z<0时,a = 0, 当z>0时,a = z,也就是说这个激活函数是对输入进行线性转换.使用这个激活函数,由于有0的存在,计算之后会删除掉一些神经元,使得神经网络变窄.
-
Python人工智能深度学习RNN模型结构流程
目录 1.RNN基础模型 2.LSTM 3.流程结构 1.RNN基础模型 RNN主要特点是,在DNN隐藏层的输出内容会被存储,并且可以作为输入给到下一个神经元. 如下图所示,当"台北"这个词被输入的时候,前面的词有可能是"离开",有可能是"到达",如果把上一次输入的"离开",所得的隐藏层内容,输入给下一层,这样就有可能区分开是"离开台北",还是"到达台北". 如果隐藏层存储的内容并给下次
-
python深度学习tensorflow训练好的模型进行图像分类
目录 正文 随机找一张图片 读取图片进行分类识别 最后输出 正文 谷歌在大型图像数据库ImageNet上训练好了一个Inception-v3模型,这个模型我们可以直接用来进来图像分类. 下载链接: https://pan.baidu.com/s/1XGfwYer5pIEDkpM3nM6o2A 提取码: hu66 下载完解压后,得到几个文件: 其中 classify_image_graph_def.pb 文件就是训练好的Inception-v3模型. imagenet_synset_to_huma
-
PyTorch深度学习模型的保存和加载流程详解
一.模型参数的保存和加载 torch.save(module.state_dict(), path):使用module.state_dict()函数获取各层已经训练好的参数和缓冲区,然后将参数和缓冲区保存到path所指定的文件存放路径(常用文件格式为.pt..pth或.pkl). torch.nn.Module.load_state_dict(state_dict):从state_dict中加载参数和缓冲区到Module及其子类中 . torch.nn.Module.state_dict()函数
-
Swin Transformer图像处理深度学习模型
目录 Swin Transformer 整体架构 Swin Transformer 模块 滑动窗口机制 Cyclic Shift Efficient batch computation for shifted configuration Relative position bias 代码实现: Swin Transformer Swin Transformer是一种用于图像处理的深度学习模型,它可以用于各种计算机视觉任务,如图像分类.目标检测和语义分割等.它的主要特点是采用了分层的窗口机制,可以
-
Python编程深度学习计算库之numpy
NumPy是python下的计算库,被非常广泛地应用,尤其是近来的深度学习的推广.在这篇文章中,将会介绍使用numpy进行一些最为基础的计算. NumPy vs SciPy NumPy和SciPy都可以进行运算,主要区别如下 最近比较热门的深度学习,比如在神经网络的算法,多维数组的使用是一个极为重要的场景.如果你熟悉tensorflow中的tensor的概念,你会非常清晰numpy的作用.所以熟悉Numpy可以说是使用python进行深度学习入门的一个基础知识. 安装 liumiaocn:tmp
-
Docker容器搭建运行python的深度学习环境的方法
任务管理器中查看虚拟化,已启用 若禁用,重启电脑,到Bios中开启 安装Docker Desktop及开启WSL功能. 打开 powershell 创建镜像 docker run --rm -it quay.io/azavea/raster-vision:pytorch-latest /bin/bash docker images 依据镜像id创建容器 docker create -it --name [name] [镜像id] docker start [name] 进入容器 docker e
随机推荐
- php实现获取及设置用户访问页面语言类
- C语言中的getchar和putchar的使用方法
- HTML实现title 属性换行小技巧
- redis安装和配置_动力节点Java学院整理
- js学习之----深入理解闭包
- angularjs2 ng2 密码隐藏显示的实例代码
- 正则中的圆括号()的用途详解
- ios8 UITableView设置 setSeparatorInset UIEdgeInsetsZero不起作用的解决办法(去掉15px空白间距)
- 详解iOS学习笔记(十七)——文件操作(NSFileManager)
- 让JavaScript拥有类似Lambda表达式编程能力的方法
- php微信公众平台开发(一) 配置接口
- jsp 自定义标签实例
- PHP的Socket网络编程入门指引
- php下获取Discuz论坛登录用户名、用户组、用户ID等信息的实现代码
- 引用外部js乱码问题分析及解决方案
- 使用c#构造date数据类型
- Java连接mysql数据库并进行内容查询的方法
- 图文详解java内存回收机制
- 利用JDBC的PrepareStatement打印真实SQL的方法详解
- MyEclipse10安装Log4E插件