深度学习入门学习笔记(六)

与学习相关的技巧

本章将介绍神经网络的学习中的一些重要观点,主题涉及寻找最优权重参数的最优化方法、权重参数的初始值、超参数的设定方法等。此外,为了应对过拟合,本章还将介绍权值衰减、Dropout等正则化方法,并进行实现。

一、参数的更新

神经网络学习的目的是找到使损失函数的值尽可能小的参数。这是寻找最优参数的问题,解决这个问题的过程称为最优化。遗憾的是,神经网络的最优化问题非常难。这是因为参数空间非常复杂,无法轻易找到最优解。而且,在深度神经网络中,参数的数量非常庞大,导致最优化问题更加复杂。
在前面的学习中,为了找到最优参数,我们将参数的梯度(导数)作为线索。使用参数的梯度,沿梯度方向更新参数,并重复这个步骤多次,从而逐渐靠近最优参数,这个过程称为随机梯度下降法,简称SGD

1. SGD

我们先来复习一下SGD。用数学式可以将SGD写成下面的式子。
W←W−η∂L∂WW\;\leftarrow\;W\;-\;\eta\frac{\partial L}{\partial W}WWηWL
SGD是朝着梯度方向只前进一定距离的简单方法。现在,我们将SGD实现为一个python类。

class SGD:def __init__(self, lr=0.01)self.lr = lrdef update(self, params, grads):for key in params.keys():params[key] -= self.lr * grads[key]

这里,进行初始化时的参数lr表示learning rate(学习率)。这个学习率会保存为实例变量。此外,代码段中还定义了update(params, grads)方法,这个方法在SGD中会被反复调用。参数params和grads是字典型变量,按params[‘W1’]、grads[‘W1’]的形式,分别保存了权重参数和它们的梯度。
使用这个SGD类,可以按如下方式进行神经网络的参数的更新

network = TwoLayerNet(...)
optimizer = SGD()   # 使用随机梯度下降作为优化器for i in range(10000):···x_batch, t_batch = get_mini_batch(...) # mini-batchgrads = network.gradient(x_batch, t_batch)params = network.paramsoptimizer.update(params, grads)···

参数的更新由optimizer负责完成。我们在这里需要做的只是将参数和梯度的信息传给optimizer。
像这样,通过单独实现进行最优化的类,功能的模块化变得更简单。比如,后面我们马上会实现另一个最优化方法Momentum,它同样会实现成拥有update(params, grads)这个共同方式的形式。这样一来,只需要将optimizer = SGD()这一语句换成optimizer = Momentum(),就可以从SGD切换为Momentum。

许多深度学习框架都实现了各种最优化方法,并且提供了可以简单切换这些方法的构造。

2. SGD的缺点

虽然SGD简单,并且容易实现,但是在解决某些问题时可能没有效率。也就是说,SGD的缺点是,如果函数的形状非均向(anisotropic),比如呈延伸状,搜索的路径就会非常低效。因此,我们需要比单纯朝梯度方向前进的SGD更聪明的方法。SGD低效的根本原因是,梯度的方向并没有指向最小值的方向
为了改进SGD的缺点,下面我们将介绍Momentum、AdaGrad、Adam这三种方法来取代SGD。

  • Momentum

Momentum是“动量”的意思,和物理有关。用数学式表示Momentum方法,如下所示。
ν←αν−η∂L∂W\nu\;\leftarrow\;\alpha\nu\;-\eta\frac{\partial L}{\partial W}νανηWL
W←W+νW\;\leftarrow\;W\;\;+\;\;\nuWW+ν

这里新出现了一个变量v,对应物理上的速度。上式表示了物体在梯度方向上受力,在这个力的作用下,物体的速度增加这一物理法则。
Momentum方法给人的感觉就像是小球在地面上滚动。

在这里插入图片描述

上面的公式中有αv这一项。在物体不受任何力时,该项承担使物体逐渐减速的任务(α设定为0.9之类的值),对应物理上的地面摩擦或者空气阻力。下面是Momentum的代码实现:

class Momentum:"""Momentum SGD"""def __init__(self, lr=0.01, momentum=0.9):self.lr = lrself.momentum = momentumself.v = Nonedef update(self, params, grads):if self.v is None:self.v = {}for key, val in params.items():self.v[key] = np.zero_like(val)for key in params.keys():self.v[key] = self.momentum*self.v[key] - self.lr*grads[key]params[key] += self.v[key]

实例变量v会保存物体的速度。初始化时,v中什么都不保存,但当第一次调用update()时,v会以字典型变量的形式保存与参数结构相同的数据。

在这里插入图片描述

上图中,更新路径就像小球在碗中滚动一样。和SGD相比,我们发现“之”字形的“程度”减轻了。这是因为虽然x轴方向上受到的力非常小,但是一直在同一方向上受力,所以朝同一个方向会有一定的加速。反过来,虽然y轴方向上受到的力很大,但是因为交互地收到正方向和反方向的力,它们会互相抵消,所以y轴方向上的速度不稳定。因此,和SGD时的情形相比,可以更快地朝x轴方向靠近,减弱“之”字形地变动程度。

  • AdaGrad

在神经网络的学习中,学习率的值很重要。学习率过小,会导致学习花费过多时间;反过来,学习率过大,则会导致学习发散而不能正确进行。
在关于学习率的有效技巧中,有一种被称为学习率衰减的方法,即随着学习的进行,使学习率逐渐减小。实际上,一开始“多”学,然后逐渐“少”学的方法,在神经网络的学习中经常被使用。
逐渐减小学习率的想法,相当于将“全体”参数的学习率一起降低。而AdaGrad进一步发展了这个想法,针对“一个一个”的参数,赋予其“定制”的值。
AdaGrad会为参数的每个元素适当地调整学习率。
h←h+∂L∂W⊙∂L∂Wh\;\leftarrow\;h\;+\;\frac{\partial L}{\partial W}\;\odot\;\frac{\partial L}{\partial W}hh+WLWL
W←W−η1h∂L∂WW\;\leftarrow\;W\;\;-\;\eta\frac1{\sqrt h}\frac{\partial L}{\partial W}WWηh1WL
和前面的SGD一样,W表示要更新的权重参数,η表示学习率。这里新出现了变量h,它保存了以前的所有梯度值的平方和。然后,在更新参数时,通过乘以1/sqrt(h),就可以调整学习的尺度。这意味着,参数的元素中变动较大(被大幅更新)的元素的学习率将变小。也就是说,可以按参数的元素进行学习率衰减,使变动大的参数的学习率逐渐减小。

AdaGrad会记录过去所有梯度的平方和。因此,学习越深入,更新的幅度就越小。实际上,如果无止境地学习,更新量就会变成0,完全不再更新。为了改善这个问题,可以使用RMSProp方法。RMSProp方法并不是将过去所有的梯度一视同仁地相加,二十逐渐地遗忘过去的梯度,在做加法运算时将新梯度的信息更多地反映出来。这种操作从专业上讲,称为“指数移动平均”,呈指数函数式地减小过去的梯度的尺度。

class AdaGrad:def __init__(self, lr=0.01):self.lr = lrself.h = Nonedef update(self, params, grads):if self.h is None:self.h = {}for key, val in params.items():self.h[key] = np.zeros_like(val)for key in params.key():self.h[key] += grads[key] * grads[key]params[key] -= self.lr * grads[key] / np.sqrt(self.h[key] + 1e-7)

这里需要注意的是,最后一行加上了微小值1e-7。这是为了防止当self.h[key]中有0时,将0用作除数的情况。在很多深度学习框架中,这个微小值也可以设定为参数,但这里我们用的是1e-7这个固定值。
现在,我们试着使用AdaGrad解决优化问题,如下图所示:

在这里插入图片描述

由上图结果可知,函数的取值高效地向着最小值移动。由于y轴方向上的梯度较大,因此刚开始变动较大,但是后面会根据这个较大的变动按比例调整,减小更新的步伐。因此,y轴方向上的更新程度被削弱,“之”字形的变动程度有所衰减。

  • Adam

Momentum参照小球在碗中滚动的物理规则进行移动,AdaGrad为参数的每个元素适当地调整更新步伐。如果将这两个方法融合在一起就是Adam方法的基本思路。
Adam是2015年提出的新方法。它的理论有些复杂,直观地讲,就是融合Momentum和AdaGrad的方法。通过组合前面两个方法的优点,有望实现参数空间的高速搜索。此外,进行超参数的“偏置校正”也是Adam的特征。

class Adam:def __init__(self, lr=0.001, beta1=0.9, beta2=0.999):self.lr = lrself.beta1 = beta1self.beta2 = beta2self.iter = 0self.m = Noneself.v = Nonedef update(self, params, grads):if self.m is None:self.m, self.v = {}, {}for key, val in params.items():self.m[key] = np.zeros_like(val)self.v[key] = np.zeros_like(val)self.iter += 1lr_t = self.lr * np.sqrt(1.0 - self.beta2**self.iter) / (1.0 - self.beta1**self.iter)for key in params.keys():# self.m[key] = self.bata1*self.m[key] + (1-self.beta1)*grads[key]# self.v[key] = self.beta2*self.v[key] + (1-self.beta2)*(grads[key]**2)self.m[key] += (1 - self.beta1) * (grads[key] - self.m[key])self.v[key] += (1 - self.beta2) * (grads[key]**2 - self.v[key])params[key] -= lr_t * self.m[key] / (np.sqrt(self.v[key]) + 1e-7)# unbias m += (1 - self.beta1) * (grads[key] - self.m[key]) # correct bias# unbias b += (1 - self.beta2) * (grads[key]*grads[key] - self.v[key]) # correct bias# params[key] += self.lr * unbias m / (np.sqrt(unbias b) + 1e-7)

在这里插入图片描述

在上图中,基于Adam的更新过程就像小球在碗中滚动一样。虽然Momentum也有类似的移动,但是相比之下,Adam的小球左右摇晃的程度有所减轻。这得益于学习的更新程度被适当地调整了。

Adam会设置3个超参数。一个是学习率(论文中以α出现),另外两个是一次momentum系数β1和二次momentum系数β2。根据论文,标准的设定值是β1为0.9,β2为0.999。设置了这些值后,大多数情况下都能顺利运行。

3. 优化器的选择问题

到目前为止,我们已经学习了4中更新参数的方法。我们来比较一下这4仲方法。

import sys, os
sys.path.append(os.pardir)  # 为了导入父目录的文件而进行的设定
import numpy as np
import matplotlib.pylot as plt
from collections import OrderedDict
from common.optimizer import *def f(x, y):return x**2 / 20.0 + y**2def df(x, y):return x / 10.0, 2.0*yinit_pos = (-7.0, 2.0)
params = {}
params['x'], params['y'] = init_pos[0], init_pos[1]
grads = {}
grads['x'], grads['y'] = 0, 0optimizers = OrderedDict()
optimizers["SGD"] = SGD(lr=0.95)
optimizers["Momentum"] = Momentum(lr=0.1)
optimizers["Adam"] = Adam(lr=0.3)idx = 1for key in optimizers:optimizer = optimizers[key]x_history = []y_history = []params['x'], params['y'] = init_pos[0], init_pos[1]for i in range(30):x_history.append(params['x'])y_history.append(params['y'])grads['x'], grads['y'] = df(params['x'], params['y'])optimizer.update(params, grads)x = np.arange(-10, 10, 0.01)y = np.arange(-5, 5, 0.01)# 生成网格点坐标矩阵X, Y = np.meshgrid(x, y)Z = f(X, Y)# for simple contour linemask = Z > 7Z[mask] = 0  # 当z大于0时为true,设置为0# plotplt.subplot(2, 2, idx)  # 两行两列,索引值为1的图idx += 1plt.plot(x_history, y_history, 'o-', color="red")plt.contour(X, Y, Z)  # 绘制等高线 contour和contourf都是画三维等高线图的,不同点在于contour()是绘制轮廓线,contourf()会填充轮廓plt.ylim(-10, 10)plt.xlim(-10, 10)plt.plot(0, 0, '+')#colorbar()#springplt.title(key)plt.xlabel("x")plt.ylabel("y")plt.show()

运行结果为:

在这里插入图片描述

根据上图所示,使用的优化方法不同参数更新的路径也不同。只看这个图的话,AdaGrad似乎是最好的,不过也要注意,结果会根据要解决的问题而变。并且,很显然,超参数(学习率等)的设定值不同,结果也会发生变化。目前并不存在能在所有问题中都表现良好的方法。这4种方法各有各的特点,都有各自擅长解决的问题和不擅长解决的问题。不过,越来越多的研究和技术人员喜欢用Adam优化。

4. 基于MNIST数据集的更新方法的比较

以手写数字识别为例,比较前面介绍的SGD、Momentum、AdaGrad、Adam这4仲方法,并确定不同的方法在学习进展上有多大程度的差异。
这个实验以一个5层神经网络为对象,其中每层有100个神经元。激活函数使用的是ReLU。
代码如下:

import os
import sys
sys.path.append(os.pardir)  # 为了导入父目录的文件而进行的设定
import matplotlib.pyplot as plt
from dataset.mnist import load_mnist
from common.util import smooth_curve
from common.multi_layer_net import MultiLayerNet
from common.optimizer import *# 0:读入MNIST数据集
(x_train, t_train), (x_test, t_test) = load_mnist(normalize=True)train_size = x_train.shape[0]
batch_size = 128
max_iterations = 2000# 1:进行实验的设置
optimizers = {}
optimizer['SGD'] = SGD()
optimizer['Momentum'] = Momentum()
optimizer['AdaGrad'] = AdaGrad()
optimizer['Adam'] = Adam()
#optimizer['RMSprop'] = RMSprop()networks = {}
train_loss = {}
for key in optimizer.keys():networks[key] = MultiLayerNet(input_size=784, hidden_size_list=[100, 100, 100, 100]output_size=10)trian_loss[key] = []# 2:开始训练
for i in range(max_iterations):batch_mask = np.random.choice(trian_size, batch_size)x_batch = x_train[batch_mask]t_batch = t_train[batch_mask]for key in optimziers.keys():grads = networks[key].gradient(x_batch, t_batch)optimziers[key].update(networks[key].params, grads)loss = networks[key].loss(x_batch, t_batch)train_loss[key].append(loss)if i % 100 == 0:\print("===========" + "iteration:" + str(i) + "===========")for key in optimziers.keys():loss = networks[key].loss(x_batch, t_batch)print(key + ":" + str(loss))# 3.绘制图形
markers = {"SGD":"o", "Momentum":"x", "AdaGrad":"s", "Adam":"D"}
x = np.arange(max_iterations)
for key in optimizers.keys():plt.plot(x, smooth_curve(trian_loss[key]), marker=markers[key], markevery=100, label=key)
plt.xlabel("iterations")
plt.ylabel("loss")
plt.ylim(0, 1)
plt.legend()
plt.show()

运行结果如下:

在这里插入图片描述

从上图结果可知,与SGD相比,其他3种方法学习的更快,而且速度基本相同,仔细看的话,AdaGrad的学习进行得稍微快一点。这个实验需要注意的是,实验结果会随学习率等超参数、神经网络得结构(深度为几层等)得不同而发生变化。不过,一般而言,与SGD先比,其他方法学习得更快,有时最终得识别精度也更高。

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 20200929jvm学习记录---基础

    1、java虚拟机jvm采用的是栈指令虚拟机,优点是指令集小(8位),零地址指令。不采用寄存器指令集,寄存器指令集可移植性差,性能好 2、jvm生命周期:虚拟机启动、执行、退出; 启动&…...

    2024/4/14 22:43:42
  2. H3C WA4300 AP廋转胖步骤

    H3C WA4300 AP廋转胖步骤 因工作需要,需将单位现有的H3C WA4300廋ap转为胖AP,使其可以自行配置并发射无线信号,现将升级过程做简要记录,主要供自己参考回忆,若有错误之处,请网上各大神勿喷。 具体步骤&…...

    2024/5/6 9:19:40
  3. Now Redis Desktop Manager is sending crash-Redis Desktop Manager连接redis发生crash

    Redis Desktop Manager连接redis发生crash 问题重现 在windows系统安装了Redis Desktop Manager,配置如下图: 连接后报错: 问题分析 判断是网络配置问题,在windows端使用telnet命令查看网络情况: telnet 192.168.0.…...

    2024/4/28 4:31:43
  4. hdfs mkdir报错Cannot create directory /usr. Name node is in safe mode.

    在进行hdfs的shell命令实验中调用mkdir时发现创建不了目录,报错org.apache.hadoop.dfs.SafeModeException: Cannot delete /user/hadoop/. Name node is in safe mode 。 查阅资料发现hdfs进入了安全模式。 解决方法: 用户可以通过dfsadmin -safemode…...

    2024/5/7 1:34:22
  5. Matlab2018 b 下载和安装说明

    本文已迁移至:https://www.cnblogs.com/coco56/p/13745260.html 如您对电脑操作不太熟悉,需要本人远程帮您安装软件,请查看:https://www.cnblogs.com/coco56/p/13385525.html...

    2024/4/1 0:44:32
  6. @vue/cli 4.5.6版本初始化项目vue create报错npm ERR! code EINTEGRITY

    1,2020/9/29安装node和vue,版本分别如图: 2,设置了淘宝镜像后初始化vue项目:vue create test001 按照博主此篇文章一路走下来还是报错: 3,处理方式,输入命令: npm cache…...

    2024/4/29 15:45:23
  7. 思念是一片星空

    思念是一片星空 给人以凄怆的美丽 它那么美 又那么远 我触不到它 可它却无处不在 牵引着我迫动的心 凌乱了我的思绪 又满载着银河里星星般的爱 漆黑晚归的夜晚 飘着些许散淡的星光 我细细的寻找那颗闪亮的标志 我弱弱的心弦 仿佛此刻就要幻灭 踏着稀疏凛冽的晚风 一路顺行 整个…...

    2024/4/15 6:53:29
  8. 快速游标更新法在oracle中的应用和MySQL中游标应用于批量更新数据

    目录情景第一次处理第二次处理最后一次机会 给点面子 别给脸不要脸啊oracle中游标的使用方法一:隐试游标(更新一次提交一次)方法二:隐试游标(更新一千次提交一次)(推荐使用)方法三&a…...

    2024/4/29 23:54:39
  9. Python和C++的区别(执行、内存管理、多态)

    Python VS C执行内存管理Python内存管理引用计数垃圾回收内存池机制金字塔C内存管理内存分块new 和deletemalloc和free多态C中多态和虚函数Python中多态和虚函数执行 PythonC语言类型脚本语言编程语言运行方式解释器翻译成可识别的指令,解释运行编译链接&#xff0…...

    2024/4/14 17:20:33
  10. StringBuffer 和StringBuilder的使用时机

    关于StringBuffer 和StringBuilder 对于具体的模块的实现,如果无法保证以后是在多线程模式下还是单线程模式下,要选用线程安全的。 除非有一天确定是单线程,性能需要提升,再修改。 编写代码,首先保证安全&#xff0c…...

    2024/4/1 12:19:09
  11. 最简易的页面变灰滤镜

    style"FILTER: grayscale(1)"最简易的页面变灰滤镜...

    2024/4/25 10:17:05
  12. Cocos2d-x 3.17.2 HelloWorld(以Windows为例,其他系统也可参考)

    文章目录1. 按2. 准备工作3. 安装Cocos2d-x 3.17.24. 创建HelloWorld工程5. 使用VS调试HelloWorld工程1. 按 本文仅介绍如何在Windows平台下进行开发,如需打包到安卓,请参考:Cocos2d-x多版本安卓打包配置,以Cocos 3.17.1为主讲&a…...

    2024/4/1 0:45:03
  13. 创建react项目

    之前搭建reactnative环境node.js、cnpm、npm、yarn都安装好了, 所以下面只是查一下版本。 安装cnpm npm install -g cnpm --registryhttps://registry.npm.taobao.org安装yarn cnpm install -g yarn安装脚手架工具 cnpm install -g create-react-app配置好后就运…...

    2024/4/27 12:46:44
  14. 会话-Cookie-Session

    会话-Cookie-Session1 什么是会话2 Cookie2.1 Cookie的工作原理2.2 Cookie的代码实现3 Session3.1 Session的工作原理3.2 Session的代码实现3.3 Session域对象的三大特征3.3.1 Session的生命周期3.3.1 Session的作用范围3.3.1 Session的主要功能4 Cookie和Session的区别4.1 Coo…...

    2024/5/7 7:27:18
  15. Redis数据备份

    Redis 数据备份与恢复 Redis SAVE 命令用于创建当前数据库的备份。 语法 redis Save 命令基本语法如下: redis 127.0.0.1:6379> SAVE 实例 redis 127.0.0.1:6379> SAVE OK 该命令将在 redis 安装目录中创建dump.rdb文件。 恢复数据 如果需要恢复数据…...

    2024/4/6 11:17:18
  16. docker 与 docker-compose version 版本对应关系

    Docker Engine 与docker-compose version 之间的有以下关系: Compose file formatDocker Engine11.9.02.01.10.02.11.12.02.2, 3.0, 3.1, 3.21.13.02.3, 3.3, 3.4, 3.517.06.02.417.12.03.618.02.03.718.06.0 但之前遇到了docker版本已经是18.06.0 但不能使用3.7版…...

    2024/4/14 17:50:05
  17. 谷露软件连续第三年通过ISO27001信息安全管理体系认证

    ISO27001一直被公认为是最严格的国际安全控制实施与管理标准。近日,谷露软件连续第三年成功通过ISO27001信息安全管理体系认证年审,持续验证了谷露可靠的信息安全监管与防护能力,也进一步体现了谷露全力保障用户信息资产的决心。截止目前&…...

    2024/4/1 11:55:42
  18. Docker安装配置centos8

    基于CentOS 8安装docker版本信息设置阿里云镜像源安装 Docker-CE(报错)安装containerd.io再次安装启动dockerdocker部分常用指令版本信息 VMware15CentOS 8 [alvinlocalhost ~]$ su 密码: [rootlocalhost alvin]# cd [rootlocalhost ~]# un…...

    2024/4/25 14:41:00
  19. 【UE4笔记】UE4中Meta里关键字的使用

    目录 1. EditCondition关键字 1.1 EditCondition和Bool变量一起使用 1.2 EditCondition和枚举变量一起使用 1. EditCondition关键字 1.1 EditCondition和Bool变量一起使用 Name属性可以通过bCanNamePropertyShow属性控制是否可编辑 UPROPERTY(EditAnywhere, BlueprintRead…...

    2024/4/7 17:48:03
  20. 用于树莓派的数据采集卡MCC简介及代码

    树莓派(Raspberry)官网https://www.raspberrypi.org/ 树莓派在某些小规模的数据采集和显示方面具有笔记本等大型设备所不具有的小巧灵活特性,入门树莓派同时相当于入门linux系统的小型计算机,树莓派的学习应用为后面的嵌入式开发也提供有必要…...

    2024/4/14 17:57:25

最新文章

  1. 有没有电脑桌面监控软件|十大电脑屏幕监控软件超全盘点!

    当然,目前市场上有许多电脑桌面监控软件可供选择,它们各有特色,旨在满足不同企业和个人对于远程监控、安全管理、提高工作效率等方面的需求。以下是根据近期资料整理的十大电脑屏幕监控软件盘点,包括它们的一些特点和优势&#xf…...

    2024/5/7 16:51:19
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/5/7 10:36:02
  3. 无人机/飞控--ArduPilot、PX4学习记录(5)

    这几天看dronekit,做无人机失控保护。 PX4官网上的经典案例,我做了很多注解,把代码过了一遍。 无人机具体执行了: 先起飞,飞至正上空10m->向北移动10m->向东移动10m->向南移动10m->向西移动10m->回到初…...

    2024/5/7 12:34:36
  4. 如何转行成为产品经理?

    转行NPDP也是很合适的一条发展路径,之后从事新产品开发相关工作~ 一、什么是NPDP? NPDP 是产品经理国际资格认证,美国产品开发与管理协会(PDMA)发起的,是目前国际公认的唯一的新产品开发专业认证&#xff…...

    2024/5/4 23:56:47
  5. 分享一个Python爬虫入门实例(有源码,学习使用)

    一、爬虫基础知识 Python爬虫是一种使用Python编程语言实现的自动化获取网页数据的技术。它广泛应用于数据采集、数据分析、网络监测等领域。以下是对Python爬虫的详细介绍: 架构和组成:下载器:负责根据指定的URL下载网页内容,常用的库有Requests和urllib。解析器:用于解…...

    2024/5/6 20:11:28
  6. 416. 分割等和子集问题(动态规划)

    题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义:dp[i][j]表示当背包容量为j,用前i个物品是否正好可以将背包填满&#xff…...

    2024/5/6 18:23:10
  7. 【Java】ExcelWriter自适应宽度工具类(支持中文)

    工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...

    2024/5/6 18:40:38
  8. Spring cloud负载均衡@LoadBalanced LoadBalancerClient

    LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon,直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件,我们讨论Spring负载均衡以Spring Cloud2020之后版本为主,学习Spring Cloud LoadBalance,暂不讨论Ribbon…...

    2024/5/6 23:37:19
  9. TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案

    一、背景需求分析 在工业产业园、化工园或生产制造园区中,周界防范意义重大,对园区的安全起到重要的作用。常规的安防方式是采用人员巡查,人力投入成本大而且效率低。周界一旦被破坏或入侵,会影响园区人员和资产安全,…...

    2024/5/7 14:19:30
  10. VB.net WebBrowser网页元素抓取分析方法

    在用WebBrowser编程实现网页操作自动化时,常要分析网页Html,例如网页在加载数据时,常会显示“系统处理中,请稍候..”,我们需要在数据加载完成后才能继续下一步操作,如何抓取这个信息的网页html元素变化&…...

    2024/5/7 0:32:52
  11. 【Objective-C】Objective-C汇总

    方法定义 参考:https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...

    2024/5/6 6:01:13
  12. 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】

    👨‍💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】🌏题目描述🌏输入格…...

    2024/5/7 14:58:59
  13. 【ES6.0】- 扩展运算符(...)

    【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数&#xff0…...

    2024/5/7 1:54:46
  14. 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?

    文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕,各大品牌纷纷晒出优异的成绩单,摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称,在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁,多个平台数据都表现出极度异常…...

    2024/5/6 20:04:22
  15. Go语言常用命令详解(二)

    文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令,这些命令可以帮助您在Go开发中进行编译、测试、运行和…...

    2024/5/7 0:32:51
  16. 用欧拉路径判断图同构推出reverse合法性:1116T4

    http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b,我们在 a i a_i ai​ 和 a i 1 a_{i1} ai1​ 之间连边, b b b 同理,则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然&#xff0…...

    2024/5/7 16:05:05
  17. 【NGINX--1】基础知识

    1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息,并安装一些有助于配置官方 NGINX 软件包仓库的软件包: apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...

    2024/5/7 16:04:58
  18. Hive默认分割符、存储格式与数据压缩

    目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限(ROW FORMAT)配置标准HQL为: ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...

    2024/5/6 19:38:16
  19. 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法

    文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中,传感器和控制器产生大量周…...

    2024/5/7 16:05:05
  20. --max-old-space-size=8192报错

    vue项目运行时,如果经常运行慢,崩溃停止服务,报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中,通过JavaScript使用内存时只能使用部分内存(64位系统&…...

    2024/5/7 0:32:49
  21. 基于深度学习的恶意软件检测

    恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞,例如可以被劫持的合法软件(例如浏览器或 Web 应用程序插件)中的错误。 恶意软件渗透可能会造成灾难性的后果,包括数据被盗、勒索或网…...

    2024/5/6 21:25:34
  22. JS原型对象prototype

    让我简单的为大家介绍一下原型对象prototype吧! 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定,每一个构造函数都有一个 prototype 属性,指向另一个对象,所以我们也称为原型对象…...

    2024/5/7 11:08:22
  23. C++中只能有一个实例的单例类

    C中只能有一个实例的单例类 前面讨论的 President 类很不错,但存在一个缺陷:无法禁止通过实例化多个对象来创建多名总统: President One, Two, Three; 由于复制构造函数是私有的,其中每个对象都是不可复制的,但您的目…...

    2024/5/7 7:26:29
  24. python django 小程序图书借阅源码

    开发工具: PyCharm,mysql5.7,微信开发者工具 技术说明: python django html 小程序 功能介绍: 用户端: 登录注册(含授权登录) 首页显示搜索图书,轮播图&#xff0…...

    2024/5/7 0:32:47
  25. 电子学会C/C++编程等级考试2022年03月(一级)真题解析

    C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...

    2024/5/6 16:50:57
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57