深度学习每次结果不一样


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

为什么不一样

我们做个实验:

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)
  • 3
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 Python基于深度学习的区域人员计数系统(源码+项目说明).zip ## 1.研究背景与意义 随着人工智能和计算机视觉的快速发展,人员计数系统在各个领域中变得越来越重要。从零售业到交通管理,从安防监控到人流分析,人员计数系统可以提供有价值的数据和信息,帮助决策者做出更好的决策。 然而,传统的人员计数系统往往面临一些挑战。首先,传统的基于传感器的人员计数系统需要大量的设备和布线工作,增加了系统的复杂性和成本。其次,传统的计数方法通常基于简单的规则和算法,对于复杂的场景和变化的环境往往效果不佳。此外,传统的计数系统往往需要人工干预和校正,耗费时间和人力资源。 为了解决这些问题,本研究提出了一种基于深度学习的区域人员计数系统,利用Python编程语言实现。深度学习是一种机器学习的方法,通过模拟人脑神经网络的结构和功能,可以从大量的数据中学习和提取特征,从而实现更准确和智能的计数。 本研究的主要目标是开发一个简单易用、高效准确的人员计数系统,可以在各种场景下使用。具体来说,本研究的贡献包括以下几个方面: 1. 开发基于深度学习的人员计数算法:本研究将利用深度学习的方法,通过训练神经网络模型,实现对人员的准确计数。深度学习的优势在于可以自动学习和提取特征,适应不同的场景和环境。 2. 设计区域人员计数系统的架构:本研究将设计一个完整的区域人员计数系统的架构,包括数据采集、特征提取、模型训练和计数输出等模块。系统将采用Python编程语言实现,具有良好的可扩展性和易用性。 3. 提供部署教程和源码:为了方便其他研究者和开发者使用和扩展本研究的成果,我们将提供详细的部署教程和源码。通过这些资源,其他人可以快速理解和使用本研究的方法和系统。 本研究的意义在于提供了一种新的、基于深度学习的人员计数系统,可以应用于各种领域和场景。与传统的计数方法相比,本系统具有更高的准确性和智能性,可以更好地满足实际需求。此外,通过提供部署教程和源码,本研究还可以促进相关领域的研究和应用的发展。 总之,本研究旨在开发一种基于深度学习的区域人员计数系统,通过Python编程语言实现,并提供详细的部署教程和源码。该系统具有重要的实际应用价值,可以在各个领域中提供有价值的数据和信息,帮助决策者做出更好的决策。 # 2.图片演示 ![2.png](cd1b7e48d05f51026341cf4daa2a602f.webp) ![3.png](da33ec0325a194bb63689ac197d48763.webp) ![4.png](8afe122a8a0289a3b2e07e9fb419aa92.webp) # 3.视频演示 https://www.bilibili.com/video/BV1Rp4y1P7S6/?vd_source=ff015de2d29cbe2a9cdbfa7064407a08 # 4.YOLOv7模型 按照论文,目前模型精度和推理性能比较均衡的是yolov7 模型(对应的开源git版本为0.1版)。根据源码+导出的onnx文件+“张大刀”等的网络图(修改了其中目前我认为的一些bug,增加一些细节)。重新绘制了yoloV7 0.1版本的非常详尽网络结构。注意: 1)其中的特征图结果维度注释是按照箭头的流方向,不是固定的上下方向。 2)输入输出仅仅是指当前模块的输入输出,整体需要根据流方向累乘计算最终的结果。 3)该模型版本没有辅助训练头。 整体上和YOLOV5是相似的,主要是网络结构的内部组件的更换(涉及一些新的sota的设计思想)、辅助训练头、标签分配思想。 ![image.png](b81d774ef527dc52bc877f2fdcfb0319.webp) ## 5.核心代码讲解 #### 5.1 check_img.py 以下是将上述代码封装为一个类的核心部分: ```python import cv2 import numpy as np import os class ImageProcessor: def __init__(self, path, train_file): self.path = path self.train_file = train_file self.num = 0 def process_images(self):

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星空下0516

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值