文章目录

  • 为什么不一样
  • 如何使得他们一样

深度学习算法在开始训练的时候,都会对神经网络进行初始化,这个初始化是由随机数来确定的。我们如果使用同一个数据,同一个网络,同样的参数设置,由于随机初始化的不同,有可能会得到不一样的结果。其实深度学习就是这样设计的,其目的之一是为了获得一个泛化能力更强的结果来。如果想要每次的结果都一样,那么就需要设置随机数生成器。

为什么不一样

我们做个实验:

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)

深度学习每次结果不一样相关推荐

  1. 用深度学习每次得到的结果都不一样,怎么办?

    http://www.sohu.com/a/150686946_116235 作者:崔静闯 神经网络算法利用了随机性,比如初始化随机权重,因此用同样的数据训练同一个网络会得到不同的结果. 初学者可能会 ...

  2. 从2012年到现在深度学习领域标志成果

    2006年,Hinton 发表了一篇论文<A Fast Learning Algorithm for Deep Belief Nets>,提出了降维和逐层预训练方法,该方法可成功运用于训练 ...

  3. 深度学习的分布式训练--数据并行和模型并行

    <div class="htmledit_views"> 在深度学习这一领域经常涉及到模型的分布式训练(包括一机多GPU的情况).我自己在刚刚接触到一机多卡,或者分布式 ...

  4. 几何深度学习(Geometric Deep Learning)技术

    几何深度学习(Geometric Deep Learning)技术 几何深度学习综述 从论文Geometric Deep Learning: Grids, Groups, Graphs, Geodes ...

  5. 基于NVIDIA GPUs的深度学习训练新优化

    基于NVIDIA GPUs的深度学习训练新优化 New Optimizations To Accelerate Deep Learning Training on NVIDIA GPUs 不同行业采用 ...

  6. 深度学习Dropout技术分析

    深度学习Dropout技术分析 什么是Dropout? dropout是指在深度学习网络的训练过程中,对于神经网络单元,按照一定的概率将其暂时从网络中丢弃.注意是暂时,对于随机梯度下降来说,由于是随机 ...

  7. 深度学习调参体验(二)

    深度学习调参体验(二) 激活函数选择: 常用的激活函数有relu.leaky-relu.sigmoid.tanh等.对于输出层,多分类任务选用softmax输出,二分类任务选用sigmoid输出,回归 ...

  8. 深度学习11个实用技巧

    深度学习11个实用技巧 深度学习工程师George Seif发表了一篇博文,总结了7个深度学习的技巧,本文增加了几个技巧,总结了11个深度学习的技巧,主要从提高深度学习模型的准确性和速度两个角度来分析 ...

  9. 深度学习模型训练过程

    深度学习模型训练过程 一.数据准备 基本原则: 1)数据标注前的标签体系设定要合理 2)用于标注的数据集需要无偏.全面.尽可能均衡 3)标注过程要审核 整理数据集 1)将各个标签的数据放于不同的文件夹 ...

最新文章

  1. R语言使用ggplot2包使用geom_violin函数绘制分组小提琴图(自定义分组的次序)实战
  2. 常用c语言小程序,c语言经典小程序汇总大全
  3. 金明的预算方案(洛谷-P1064)
  4. python编程例子-python网络编程实例简析
  5. Luogu P1963 [NOI2009]变换序列(二分图匹配)
  6. 第二季-专题5-核心初始化
  7. 【考研高数 自用】高数第一章基础阶段思维导图
  8. 服装进销存软件哪个好?十大优质服装进销存管理软件排名
  9. uniapp 安卓模拟器mumu 端口配置
  10. 顺序表的初始化、插入、删除、查找
  11. linux命令操作改变图片大小,使用linux命令调整图片大小、格式等
  12. 北邮 离散数学 期末必考题总结(含重点英文单词)
  13. Python-docx 读写 Word 文档:读取正文、表格文本信息、段落格式、字体格式等
  14. 关于wlw(windows live writer):“无法连接到您的日志服务:服务器响应无效”的解决方案
  15. php验证码有图片没数字,php验证码图片不显示
  16. 达观数据智能对公审贷系统,深化上海银行普惠金融、供应链金融科技创新
  17. 中国春节和犹太人的春节
  18. 上海交大计算机系07,08就业一栏(硕士生)
  19. 计算机数学课程标准,最新《义务教育数学课程标准版》
  20. MySQL学习笔记-约束以及修改数据表

热门文章

  1. 计算机自适应测评(CAT)调研
  2. Ice Cave bfs
  3. swift 颜色 16进制_扔进Swift的封盖
  4. 妇女节特辑 | 别怀疑,你就是那个一身优点的女生!「#声浪计划xJollee」
  5. 轻量级锁、偏向锁、重量级锁详情
  6. charles常用——电脑上的证书失效,重新安装证书
  7. 【PPSSPP模拟器远程联机】
  8. 米家接入HomeKit系列一:接入基本原理与开篇
  9. 英特尔已不满足于只做CPU
  10. 联想小新pro16笔记本无法调节亮度以及外接显示屏进行分屏