深度学习每次结果不一样
文章目录
- 为什么不一样
- 如何使得他们一样
深度学习算法在开始训练的时候,都会对神经网络进行初始化,这个初始化是由随机数来确定的。我们如果使用同一个数据,同一个网络,同样的参数设置,由于随机初始化的不同,有可能会得到不一样的结果。其实深度学习就是这样设计的,其目的之一是为了获得一个泛化能力更强的结果来。如果想要每次的结果都一样,那么就需要设置随机数生成器。
为什么不一样
我们做个实验:
import numpy as np
from numpy.random import seed
print("不设置随机种子数,输出随机数")
for i in range(5):print(np.random.rand(1))print("设置随机种子数,输出随机数")
for j in range(5):seed(1234) # 这里的seed的值随便设置print(np.random.rand(1))
输出结果:
不设置seed随机数,生成的随机数每次都是随机的。设置了seed随机数后,生成的随机数都是一样的。如果在深度学习中,不设置seed随机数,就意味着深度学习的输入每次的输入是不一样的。那么在深度学习中常见的利用随机数有很多地方,比如权值初始化、Dropout的正则化的随机性、优化器的随机性等等。一般来说,机器学习提倡使用不同的随机数,因为这样能够提高结果的泛化能力,即效果更好。但是有时候我们需要给定随机性。
如何使得他们一样
其实一种比较简单但费时的方法就是进行多次训练,比如对某个数据进行100次学习,然后将结果进行汇总平均,得到的结果正常情况下是相同的。如果依然有较大差别的话,首先考虑模型是否合适,或者更换模型。再就是对产生的随机数进行100%固定,这样就可以得到相同的结果了。
使用不同的库,随机数的设置不同,主要有下面几个设置:
- python设置随机数
import random
random.seed(1234)
- numpy设置随机数
from numpy.random import seed
seed(1234)
- tensorflow1设置随机数
import tensorflow as tf
tf.random.set_random_seed(1234)
- tensorflow2版本下的tensorflow1设置随机数
import tensorflow as tf
tf.compat.v1.set_random_seed(1234)
- tensorflow下的keras设置随机数
import tensorflow as tf
tf.keras.utils.set_random_seed(1234)
- tensorflow2设置随机数
import tensorflow as tf
tf.random.set_seed(1234)
- pytorch设置随机数
import torch
torch.manual_seed(1234)
深度学习每次结果不一样相关推荐
- 用深度学习每次得到的结果都不一样,怎么办?
http://www.sohu.com/a/150686946_116235 作者:崔静闯 神经网络算法利用了随机性,比如初始化随机权重,因此用同样的数据训练同一个网络会得到不同的结果. 初学者可能会 ...
- 从2012年到现在深度学习领域标志成果
2006年,Hinton 发表了一篇论文<A Fast Learning Algorithm for Deep Belief Nets>,提出了降维和逐层预训练方法,该方法可成功运用于训练 ...
- 深度学习的分布式训练--数据并行和模型并行
<div class="htmledit_views"> 在深度学习这一领域经常涉及到模型的分布式训练(包括一机多GPU的情况).我自己在刚刚接触到一机多卡,或者分布式 ...
- 几何深度学习(Geometric Deep Learning)技术
几何深度学习(Geometric Deep Learning)技术 几何深度学习综述 从论文Geometric Deep Learning: Grids, Groups, Graphs, Geodes ...
- 基于NVIDIA GPUs的深度学习训练新优化
基于NVIDIA GPUs的深度学习训练新优化 New Optimizations To Accelerate Deep Learning Training on NVIDIA GPUs 不同行业采用 ...
- 深度学习Dropout技术分析
深度学习Dropout技术分析 什么是Dropout? dropout是指在深度学习网络的训练过程中,对于神经网络单元,按照一定的概率将其暂时从网络中丢弃.注意是暂时,对于随机梯度下降来说,由于是随机 ...
- 深度学习调参体验(二)
深度学习调参体验(二) 激活函数选择: 常用的激活函数有relu.leaky-relu.sigmoid.tanh等.对于输出层,多分类任务选用softmax输出,二分类任务选用sigmoid输出,回归 ...
- 深度学习11个实用技巧
深度学习11个实用技巧 深度学习工程师George Seif发表了一篇博文,总结了7个深度学习的技巧,本文增加了几个技巧,总结了11个深度学习的技巧,主要从提高深度学习模型的准确性和速度两个角度来分析 ...
- 深度学习模型训练过程
深度学习模型训练过程 一.数据准备 基本原则: 1)数据标注前的标签体系设定要合理 2)用于标注的数据集需要无偏.全面.尽可能均衡 3)标注过程要审核 整理数据集 1)将各个标签的数据放于不同的文件夹 ...
最新文章
- R语言使用ggplot2包使用geom_violin函数绘制分组小提琴图(自定义分组的次序)实战
- 常用c语言小程序,c语言经典小程序汇总大全
- 金明的预算方案(洛谷-P1064)
- python编程例子-python网络编程实例简析
- Luogu P1963 [NOI2009]变换序列(二分图匹配)
- 第二季-专题5-核心初始化
- 【考研高数 自用】高数第一章基础阶段思维导图
- 服装进销存软件哪个好?十大优质服装进销存管理软件排名
- uniapp 安卓模拟器mumu 端口配置
- 顺序表的初始化、插入、删除、查找
- linux命令操作改变图片大小,使用linux命令调整图片大小、格式等
- 北邮 离散数学 期末必考题总结(含重点英文单词)
- Python-docx 读写 Word 文档:读取正文、表格文本信息、段落格式、字体格式等
- 关于wlw(windows live writer):“无法连接到您的日志服务:服务器响应无效”的解决方案
- php验证码有图片没数字,php验证码图片不显示
- 达观数据智能对公审贷系统,深化上海银行普惠金融、供应链金融科技创新
- 中国春节和犹太人的春节
- 上海交大计算机系07,08就业一栏(硕士生)
- 计算机数学课程标准,最新《义务教育数学课程标准版》
- MySQL学习笔记-约束以及修改数据表