深度学习知识点:神经网络

深度学习知识点:神经网络

  • 前言
  • 神经网络
    • 激活函数的优缺点
    • 为什么ReLU常用于神经网络的激活函数?
    • 梯度消失和梯度爆炸的解决方案?梯度爆炸引发的问题?
    • 如何确定是否出现梯度爆炸?
    • 神经网络中有哪些正则化技术?
    • 批量归一化(BN) 如何实现?作用?
    • 神经网络中权值共享的理解?
    • 对fine-tuning(微调模型)的理解?为什么要修改最后几层神经网络权值?
    • 什么是Dropout?为什么有用?它是如何工作的?
    • 如何选择dropout 的概率?
    • 什么是Adam?Adam和SGD之间的主要区别是什么?
    • 一阶优化和二阶优化的方法有哪些?为什么不使用二阶优化?
    • 为什么Momentum可以加速训练?
    • 什么时候使用Adam和SGD?‍
    • batch size和epoch的平衡
    • SGD每步做什么,为什么能online learning?
    • 学习率太大(太小)时会发生什么?如何设置学习率?‍
    • 神经网络为什么不用拟牛顿法而是用梯度下降?
    • BN和Dropout在训练和测试时的差别?
    • 若网络初始化为0的话有什么问题?
    • sigmoid和softmax的区别?softmax的公式?
    • 改进的softmax损失函数有哪些?
    • 深度学习调参有哪些技巧?
    • 神经网络调参,要往哪些方向想?
    • 深度学习训练中是否有必要使用L1获得稀疏解?
    • 神经网络数据预处理方法有哪些?
    • 如何初始化神经网络的权重?‍神经网络怎样进行参数初始化?
    • 为什么构建深度学习模型需要使用GPU?
    • 前馈神经网络(FNN),递归神经网络(RNN)和 CNN 区别?
    • 神经网络可以解决哪些问题?
    • 如何提高小型网络的精度?
    • 列举你所知道的神经网络中使用的损失函数
    • 什么是鞍点问题?
    • 网络设计中,为什么卷积核设计尺寸都是奇数?
  • 参考

前言

  • 本文是个人收集、整理、总结的一些人工智能知识点,由于本人水平有限,难免出现错漏,敬请批评改正。
  • 由于本文是对知识点的收集和整理,图片基本来源于网络,图片若侵权,可联系删除。
  • 更多精彩内容,可点击进入人工智能知识点
    专栏、Python日常小操作专栏、OpenCV-Python小应用专栏、YOLO系列专栏、自然语言处理专栏或我的个人主页查看
  • 基于DETR的人脸伪装检测
  • YOLOv7训练自己的数据集(口罩检测)
  • YOLOv8训练自己的数据集(足球检测)
  • YOLOv5:TensorRT加速YOLOv5模型推理
  • YOLOv5:IoU、GIoU、DIoU、CIoU、EIoU
  • 玩转Jetson Nano(五):TensorRT加速YOLOv5目标检测
  • YOLOv5:添加SE、CBAM、CoordAtt、ECA注意力机制
  • YOLOv5:yolov5s.yaml配置文件解读、增加小目标检测层
  • Python将COCO格式实例分割数据集转换为YOLO格式实例分割数据集
  • YOLOv5:使用7.0版本训练自己的实例分割模型(车辆、行人、路标、车道线等实例分割)
  • 使用Kaggle GPU资源免费体验Stable Diffusion开源项目

神经网络

激活函数的优缺点

在这里插入图片描述

为什么ReLU常用于神经网络的激活函数?

1.在前向传播和反向传播过程中,ReLU相比于Sigmoid等激活函数计算量小;
2.避免梯度消失问题。对于深层网络,Sigmoid函数反向传播时,很容易就会出现梯度消失问题(在Sigmoid接近饱和区时,变换太缓慢,导数趋于0,这种情况会造成信息丢失),从而无法完成深层网络的训练。
3.可以缓解过拟合问题的发生。Relu会使一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生。
4.相比Sigmoid型函数,ReLU函数有助于随机梯度下降方法收敛。
为什么需要激活功能?
激活函数是用来加入非线性因素的,因为线性模型的表达能力不够。

梯度消失和梯度爆炸的解决方案?梯度爆炸引发的问题?

  1. 梯度消失:靠近输出层的hidden layer 梯度大,参数更新快,所以很快就会收敛;
    而靠近输入层的hidden layer 梯度小,参数更新慢,几乎就和初始状态一样,随机分布。
    另一种解释:当反向传播进行很多层的时候,由于每一层都对前一层梯度乘以了一个小数,因此越往前传递,梯度就会越小,训练越慢。
  2. 梯度爆炸:前面layer的梯度通过训练变大,而后面layer的梯度指数级增大。
    ①在深度多层感知机(MLP)网络中,梯度爆炸会引起网络不稳定,最好的结果是无法从训练数据中学习,而最坏的结果是出现无法再更新的 NaN 权重值。
    ②在RNN中,梯度爆炸会导致网络不稳定,无法利用训练数据学习,最好的结果是网络无法学习长的输入序列数据。
    在这里插入图片描述

如何确定是否出现梯度爆炸?

  • 模型不稳定,导致更新过程中的损失出现显著变化;
  • 训练过程中模型梯度快速变大;
  • 训练过程中模型权重变成 NaN 值;
  • 训练过程中,每个节点和层的误差梯度值持续超过 1.0。

神经网络中有哪些正则化技术?

  • L2正则化(Ridge);
  • L1正则化(Lasso);
  • 权重衰减;
  • 丢弃法;
  • 批量归一化;
  • 数据增强;
  • 早停法‍,

批量归一化(BN) 如何实现?作用?

  • 实现过程: 计算训练阶段mini_batch数量激活函数前结果的均值和方差,然后对其进行归一化,最后对其进行缩放和平移。
  • 作用:
    1.可以使用更高的学习率进行优化;
    2.移除或使用较低的 dropout;
    3.降低L2权重衰减系数;
    4.调整了数据的分布,不考虑激活函数,它让每一层的输出归一化到了均值为0方差为1的分布,这保证了梯度的有效性,可以解决反向传播过程中的梯度问题。

神经网络中权值共享的理解?

  • 权值共享这个词是由LeNet5模型提出来的。以CNN为例,在对一张图偏进行卷积的过程中,使用的是同一个卷积核的参数。
  • 比如一个3×3×1的卷积核,这个卷积核内9个的参数被整张图共享,而不会因为图像内位置的不同而改变卷积核内的权系数。
  • 通俗说:就是用一个卷积核不改变其内权系数的情况下卷积处理整张图片。

对fine-tuning(微调模型)的理解?为什么要修改最后几层神经网络权值?

  • 使用预训练模型的好处:在于利用训练好的SOTA模型权重去做特征提取,可以节省我们训练模型和调参的时间。
    理由:
    1.CNN中更靠近底部的层(定义模型时先添加到模型中的层)编码的是更加通用的可复用特征,而更靠近顶部的层(最后添加到模型中的层)编码的是更专业化的特征。微调这些更专业化的特征更加有用,它更代表了新数据集上的有用特征。
    2.训练的参数越多,过拟合的风险越大。很多SOTA模型拥有超过千万的参数,在一个不大的数据集上训练这么多参数是有过拟合风险的,除非你的数据集像Imagenet那样大。

什么是Dropout?为什么有用?它是如何工作的?

  • 背景:如果模型的参数太多,数据量又太小,则容易产生过拟合。为了解决过拟合,就同时训练多个网络。然后多个网络取均值。费时!
  • 介绍:Dropout可以防止过拟合,在前向传播的时候,让某个神经元的激活值以一定的概率 P停止工作,这样可以使模型的泛化性更强。
    Dropout效果跟bagging效果类似(bagging是减少方差variance,而boosting是减少偏差bias)。
  • 加入dropout会使神经网络训练时间长,模型预测时不需要dropout,记得关掉。‍
  • 具体流程:
    i.随机删除(临时)网络中一定的隐藏神经元,输入输出保持不变,
    ii.让输入通过修改后的网络。然后把得到的损失同时修改后的网络进行反向传播。在未删除的神经元上面进行参数更新
    iii.重复该过程(恢复之前删除掉的神经元,以一定概率删除其他神经元。前向传播、反向传播更新参数)

如何选择dropout 的概率?

  • input 的 dropout 概率推荐是 0.8, hidden layer 推荐是0.5
    为什么dropout可以解决过拟合?
    1.取平均的作用:
    Dropout产生了许多子结构之后的操作,父神经网络有N个节点,加入Dropout之后可以看做在权值不变的情况下(参数共享)将模型数量扩增到指数级别
    2.减少神经元之间复杂的共适应关系,迫使网络去学习更加鲁棒;
    Dropout 在训练和测试的区别?
    训练时随机删除一些神经元,在测试模型时将所有的神经元加入。

什么是Adam?Adam和SGD之间的主要区别是什么?

  • Adam是一种基于梯度下降的优化算法,特别适用于训练神经网络。与传统的随机梯度下降(SGD)优化器相比,Adam融合了动量(momentum)和自适应学习率的思想,使得参数更新更加稳定,加速收敛。

  • Adam算法的核心思想是计算每个参数的自适应学习率。在每次迭代中,它都会根据损失函数对每个参数的梯度的一阶矩估计和二阶矩估计动态调整学习速率。具体来说,Adam会存储过去一段时间的梯度的平均值和二次方平均值,并利用这些统计量来调整每个参数的学习率。

  • 与SGD相比,Adam的主要优势在于其自适应学习率特性。SGD优化器是基于每个样本的梯度来更新模型参数的,其学习率是固定的。然而,Adam可以根据每个参数的不同特性自适应地调整学习率,这使得它在处理复杂非凸优化问题和大型神经网络时表现得更为出色。

  • 然而,Adam也有一些局限性。例如,它需要额外的内存来存储和更新梯度的平均值和二次方平均值。对于小批量训练数据(batch size较小),Adam的效果可能不如SGD。因为Adam基于梯度的平均值和二次方平均值来调整学习率,而这些统计量可能受到小批量样本的偏差影响,导致学习率的调整不准确。

  • 总体而言,Adam和SGD是两种不同类型的优化器,适用于不同规模和性质的问题。在选择使用哪种优化器时,需要根据具体问题的需求进行权衡。

SGDAdam
学习率调整方式固定学习率自适应学习率
稳定性较低较高
适用性大规模数据集和计算资源有限的情况复杂的非凸优化问题和大型神经网络
内存需求较低较高
对小批量数据的敏感性较低较高

一阶优化和二阶优化的方法有哪些?为什么不使用二阶优化?

  • 一阶优化方法有:

SGD -> SGDM ->NAG -> AdaGrad -> AdaDelta / RMSProp(加速梯度下降) -> Adam -> Nadam

  • 二阶优化
  1. 定义:对目标函数进行二阶泰勒展开,也就是二阶梯度优化方法
    牛顿法 + BFGS法.
    利用二阶泰勒展开,即牛顿法需要计算Hessian矩阵的逆,计算量大,在深度学习中并不常用。因此一般使用的是一阶梯度优化。

在这里插入图片描述

为什么Momentum可以加速训练?

  • 动量其实累加了历史梯度更新方向,所以在每次更新时,要是当前时刻的梯度与历史时刻梯度方向相似,这种趋势在当前时刻则会加强;要是不同,则当前时刻的梯度方向减弱。动量方法限制了梯度更新方向的随机性,使其沿正确方向进行。

什么时候使用Adam和SGD?‍

Adam等自适应学习率算法对于稀疏数据具有优势,且收敛速度很快;
但精调参数的SGD(+Momentum)往往能够取得更好的最终结果
Adam+SGD 组合策略:先用Adam快速下降,再用SGD调优。
如果模型是非常稀疏的,那么优先考虑自适应学习率的算法;
在模型设计实验过程中,要快速验证新模型的效果,用Adam进行快速实验优化;
在模型上线或者结果发布前,可以用精调的SGD进行模型的极致优化。

batch size和epoch的平衡

在这里插入图片描述

SGD每步做什么,为什么能online learning?

online learning强调的是学习是实时的,流式的,每次训练不用使用全部样本,而是以之前训练好的模型为基础,每来一个样本就更新一次模型,这种方法叫做OGD(online gradient descent),目的是快速地进行模型的更新,提升模型时效性。而SGD的思想正是在线学习的思想。

学习率太大(太小)时会发生什么?如何设置学习率?‍

  • 基于经验的手动调整
    通过尝试不同的固定学习率,如3、1、0.5、0.1、0.05、0.01、0.005,0.0001等,观察迭代次数和loss的变化关系,找到loss下降最快关系对应的学习率。
    • 太小,收敛过程将变得十分缓慢;
    • 太大,梯度可能会在最小值附近来回震荡(loss爆炸),甚至可能无法收敛。
  • 基于策略的调整
    ①fixed 、exponential、polynomial
    ②自适应动态调整。adadelta、adagrad、ftrl、momentum、rmsprop、sgd
    在这里插入图片描述③Logit:对它取对数。
    在这里插入图片描述

神经网络为什么不用拟牛顿法而是用梯度下降?

  • 牛顿法原理:使用函数f(x)的泰勒级数的前面几项来寻找方程f(x)= 0的根。
  • 在这里插入图片描述

BN和Dropout在训练和测试时的差别?

  • BN:

训练时:是对每一个batch的训练数据进行归一化,也即是用每一批数据的均值和方差。
测试时:都是对单个样本进行测试。这个时候的均值和方差是全部训练数据的均值和方差,这两个数值是通过移动平均法求得。
当一个模型训练完成之后,它的所有参数都确定了,包括均值和方差,gamma和bata。

  • Dropout
    只有在训练的时候才采用,是为了减少神经元对部分上层神经元的依赖,类似将多个不同网络结构的模型集成起来,减少过拟合的风险。

若网络初始化为0的话有什么问题?

w初始化全为0,很可能直接导致模型失效,无法收敛。

sigmoid和softmax的区别?softmax的公式?

在这里插入图片描述
在这里插入图片描述

改进的softmax损失函数有哪些?

  • Large Margin Softmax Loss (L-Softmax)
    加了一个margin,要保证大于某一个阈值。这样可以尽量实现让类间间距更大化,类内距离更小。
  • Center Loss
    通过将特征和特征中心的距离和softmax loss一同作为损失函数,使得类内距离更小,有点L1,L2正则化。

深度学习调参有哪些技巧?

  • 准备数据
    1.1 保证有大量、高质量并且带有干净标签的数据;
    1.2 样本要随机化,防止大数据淹没小数据;
    1.3 样本要做归一化.
  • 预处理:0均值和1方差化
  • minibatch:建议值128,不要用过大的数值,否则很容易过拟合
  • 梯度归一化:其实就是计算出来梯度之后,要除以minibatch的数量。
  • 学习率
    • 用一个一般的lr开始,然后逐渐的减小它;
    • 建议值是0.01,适用于很多NN的问题,一般倾向于小一点;
    • 对于调度学习率的建议:如果在验证集上性能不再增加就让学习率除以2或者5,然后继续,学习率会一直变得很小,到最后就可以停止训练了。
    • 很多人用的一个设计学习率的原则就是监测一个比率(范数和权值范数之间的比率),如果这个比率在10-3附近,如果小于这个值,学习会很慢,如果大于这个值,那么学习很不稳定,由此会带来失败。
  • 使用验证集,可以知道什么时候开始降低学习率,和什么时候停止训练。
  • 权重初始化的选择:
    • 用高斯分布乘上一个很小的数
    • 在深度网络中,随机初始化权重,使用SGD的话一般处理的都不好,这是因为初始化的权重太小了。这种情况下对于浅层网络有效,但是当足够深的时候就不行了,因为weight更新的时候,是靠很多weight相乘的,越乘越小,有点类似梯度消失。
  • 如果训练RNN或者LSTM,务必保证gradient的norm被约束在15或者5(前提还是要先归一化gradient),这一点在RNN和LSTM中很重要。
  • Adam收敛速度的确要快一些,可结果往往没有sgd + momentum的解好(如果模型比较复杂的话,sgd是比较难训练的,这时候用adam较好)
  • 如果使用LSTM来解决长时依赖的问题,记得初始化bias的时候要大一点
  • 尽可能想办法多的扩增训练数据,如果使用的是图像数据,不妨对图像做一点扭转之类的操作,来扩充数据训练集合。
  • 使用dropout。
  • early stop,发现val_loss没更新,就尽早停止。
  • 评价最终结果的时候,多做几次,然后平均一下他们的结果。

神经网络调参,要往哪些方向想?

  • 损失函数的选择是否是合适的
  • 学习率的选取是否合适
  • batch size选择是否合适
  • 训练样本是否正常,是否需要增强
  • 是否有设置batch normlaztion(数据归一化)
  • 激活函数的类型需要选取恰当
  • 选取合适的优化算法(例如梯度下降,Adam等)
  • 是否存在过拟合

深度学习训练中是否有必要使用L1获得稀疏解?

没必要。对于加了L1正则的神经网络,大部分深度学习框架自带的优化器训练获得不了稀疏解;如果稀疏解的模式是无规律的,这种稀疏意义不大。

神经网络数据预处理方法有哪些?

  • 中心化/零均值,归一化

如何初始化神经网络的权重?‍神经网络怎样进行参数初始化?

  1. 将所有的参数初始化为0
  2. 对w随机初始化
  3. Xavier初始化:尽可能的让输入和输出服从相同的分布,这样就能够避免后面层的激活函数的输出值趋向于0
  4. 何氏初试法
    如果权重初始化太小,会导致神经元的输入过小,随着层数的不断增加,会出现信号消失的问题;也会导致sigmoid激活函数丢失非线性的能力,因为在0附近sigmoid函数近似是线性的。如果参数初始化太大,会导致输入状态太大。
    对sigmoid激活函数来说,激活函数的值会变得饱和,从而出现梯度消失的问题。

为什么构建深度学习模型需要使用GPU?

  • VGG16(在DL应用中经常使用16个隐藏层的卷积神经网络)大约具有1.4亿个参数,又称权重和偏见。如果用传统的方法,训练这种系统需要几年的时间。
  • 神经网络的计算密集部分由多个矩阵乘法组成,可以简单地通过同时执行所有操作,而不是一个接一个地执行,要使用GPU(图形处理单元)而不是CPU来训练神经网络。

前馈神经网络(FNN),递归神经网络(RNN)和 CNN 区别?

  • FNN 是指在一个vector内部的不同维度之间进行一次信息交互。
  • CNN是以逐次扫描的方式在一个vector的局部进行多次信息交互。
  • RNN就是在hidden state上增加了loop,看似复杂,其实就是从时间维度上进行了展开。是在不同时刻的多个vectors之间进行信息交互。

神经网络可以解决哪些问题?

在这里插入图片描述

如何提高小型网络的精度?

  1. 模型蒸馏技术;
  2. 利用AutoML进行网络结构的优化。

列举你所知道的神经网络中使用的损失函数

  • 欧氏距离,交叉熵,对比损失,合页损失

什么是鞍点问题?

  • 梯度为0,海森矩阵不定的点,不是极值点。

网络设计中,为什么卷积核设计尺寸都是奇数?

① 保证像素点中心位置,避免位置信息偏移
② 填充边缘时能保证两边都能填充,原矩阵依然对称

参考

[1] https://blog.csdn.net/cc13186851239

  • 由于本人水平有限,难免出现错漏,敬请批评改正。
  • 更多精彩内容,可点击进入人工智能知识点
    专栏、Python日常小操作专栏、OpenCV-Python小应用专栏、YOLO系列专栏、自然语言处理专栏或我的个人主页查看
  • 基于DETR的人脸伪装检测
  • YOLOv7训练自己的数据集(口罩检测)
  • YOLOv8训练自己的数据集(足球检测)
  • YOLOv5:TensorRT加速YOLOv5模型推理
  • YOLOv5:IoU、GIoU、DIoU、CIoU、EIoU
  • 玩转Jetson Nano(五):TensorRT加速YOLOv5目标检测
  • YOLOv5:添加SE、CBAM、CoordAtt、ECA注意力机制
  • YOLOv5:yolov5s.yaml配置文件解读、增加小目标检测层
  • Python将COCO格式实例分割数据集转换为YOLO格式实例分割数据集
  • YOLOv5:使用7.0版本训练自己的实例分割模型(车辆、行人、路标、车道线等实例分割)
  • 使用Kaggle GPU资源免费体验Stable Diffusion开源项目

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/484521.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

知识图表示学习中的负抽样研究综述

摘要 知识图表示学习(KGRL)或知识图嵌入(KGE)在知识构建和信息探索的人工智能应用中起着至关重要的作用。这些模型旨在将知识图中的实体和关系编码到低维向量空间中。在KGE模型的训练过程中,使用正样本和负样本是区分的必要条件。然而,直接从现有的知识…

Qt 写一个邮件发送程序

最近在完成一个邮箱代替的告警功能&#xff0c;写了一个邮件发送的demo 以下为代码&#xff1a; #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include<QTcpSocket> namespace Ui { class MainWindow; }class MainWindow : public QMainWin…

C语言字节对齐关键字#pragma pack(n)的使用

0 前言 在进行嵌入式开发的过程中&#xff0c;我们经常会见到对齐操作。这些对齐操作有些是为了便于实现指针操作&#xff0c;有些是为了加速对内存的访问。因此&#xff0c;学习如何使用对齐关键字是对于嵌入式开发是很有必要的。 1 对齐规则 1.0 什么叫做对齐 众所周知&a…

深度学习pytorch——多层感知机反向传播(持续更新)

在讲解多层感知机反向传播之前&#xff0c;先来回顾一下多输出感知机的问题&#xff0c;下图是一个多输出感知机模型&#xff1a; 课时44 反向传播算法-1_哔哩哔哩_bilibili 根据上一次的分析深度学习pytorch——感知机&#xff08;Perceptron&#xff09;&#xff08;持续更新…

Django Ajax

【一】Json 【1】介绍 JSON&#xff08;javascript object otaition&#xff09;是一种轻量级的数据交换格式JSON使用了Javascript的一部分语法来定义其数据格式&#xff0c;但Json是独立于语言的Json采用完全独立于语言的文本格式&#xff0c;使得Json成为理想的数据交互语言…

从这15个简洁B端系统控制台页面,你悟到了什么?

从这15个简洁英文 B 端系统控制台页面中&#xff0c;我可以得出以下一些结论&#xff1a; 系统注重简洁性&#xff1a;这些页面采用了简洁的设计风格&#xff0c;避免了过多的装饰和冗余的信息&#xff0c;使用户界面更加清晰和易于使用。用户导航清晰&#xff1a;这些页面通常…

get_ipython()函数使用

今天发现一个很有意思的函数&#xff0c; 在jupyter notebook中&#xff0c;我也可以用命令实现这些值 get_ipython().system(nvidia-smi)结果如下 get_ipython().system(pwd)

学习大数据之JDBC(使用JAVA语句进行SQL操作)

文章目录 DCL语句创建用户授权用户撤销授权查看权限删除用户修改用户密码修改普通用户密码 JDBCjdbc介绍JDBC准备JDBC开发步骤以及详解JDBC注册驱动JDBC获取连接JDBC实现增删改操作JDBC 工具类的使用 DCL语句 我们现在默认使用的都是root用户&#xff0c;超级管理源&#xff0…

计算机基础系列 —— 汇编语言

Same hardware can run many different programs(Software) 文中提到的所有实现都可以参考&#xff1a;nand2tetris_sol&#xff0c;但是最好还是自己学习课程实现一遍&#xff0c;理解更深刻。 我们在之前的文章里&#xff0c;构建了 Register、RAM 和 ALU&#xff0c;使得我…

智慧物联-能源分析平台

物联能源分析平台是为了满足企业对能源管理和节能减排的需求而开发的一套在线平台。随着能源问题日益凸显&#xff0c;企业对能源的使用和管理面临着越来越大的挑战。因此&#xff0c;开发一个能够帮助企业实时监测、分析和优化能源消耗的平台变得尤为重要。 随着工业化和城市…

apifox创建接口含中文字符报错的两种解决方案

针对apifox的含中文报错解决方法&#xff1a; 方法一&#xff1a;创建相应接口后&#xff0c;在设置中URL自动编码为WHATING。 方法二&#xff1a;直接将浏览器的url复制到apifox中&#xff0c;浏览器会自动解析配置中文转换路径。

带大家做一个,易上手的家常水煮肉片

首先 我们泡一些腐竹 如果不会泡 可以查看我的文章 泡软超时干腐竹方法 然后 拿一块猪瘦肉 切 相对厚一点点的薄片 一包豆芽 洗干净 肉片装在大碗中 倒入 小半勺食用盐 适量胡椒粉 倒入一勺生抽 适量蚝油 一点点老抽 一勺淀粉 抓拌均匀 切一些 姜末 蒜末 一把花椒 七八个干…

常见技术难点及方案

1. 分布式锁 1.1 难点 1.1.1 锁延期 同一时间内不允许多个客户端同时获得锁&#xff1b; 1.1.2 防止死锁 需要确保在任何故障场景下&#xff0c;都不会出现死锁&#xff1b; 1.2.3 可重入 特殊的锁机制&#xff0c;它允许同一个线程多次获取同一个锁而不会被阻塞。 1.2…

Embedding #notebook

Embedding 上一个篇章huggingface tokenizer #notebook我们讲解了tokenizer的使用&#xff0c;这一个篇章我们继续讲解所谓的embedding&#xff0c;这是通向模型的第一个层&#xff0c;它实际上就是一个全连接层&#xff0c;那么从一个text文本’我爱中南大学’&#xff0c;经…

【微服务】以模块化单体架构开发微服务应用

目录 推荐超级课程: Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速入门实战我们知道,起初,单体应用有显著的优势:它们更容易开发和部署。从开发人员的角度来看,这种简单性是有益的。一切都是集中的,可以快速更新任何部分的业务逻辑并立即看到结果。这种开…

matlab 去除海图的右上角的刻度

matlab 去除海图的右上角的刻度 matlab 去除海图的右上角的刻度 去除&#xff1a; 图片 未去除&#xff1a; 本期不提供图片的代码&#xff1a;以后收费发布&#xff1b;整理中&#xff1b; 本期思路解决方法来自物理海洋科研群中 只需要把m_grid的代码484-485和569-570行…

Redis消息队列与thinkphp/queue操作

业务场景 场景一 用户完成注册后需要发送欢迎注册的问候邮件、同时后台要发送实时消息给用户对应的业务员有新的客户注册、最后将用户的注册数据通过接口推送到一个营销用的第三方平台。 遇到两个问题&#xff1a; 由于代码是串行方式&#xff0c;流程大致为&#xff1a;开…

蓝桥杯day12刷题日记

P8720 [蓝桥杯 2020 省 B2] 平面切分 思路&#xff1a;首先借用dalao的图解释一下&#xff0c;又多出一条与当前平面任意一条直线都不重合线时&#xff0c;多了的平面是交点数1&#xff0c;所以用双层循环每次往里面加一条直线&#xff0c;计算交点 #include <iostream>…

生日悖论与概率分析:如何运用随机算法解答生日问题

生日&#xff0c;这个我们每年都会庆祝的特殊日子&#xff0c;在概率学和随机算法中却隐藏着许多有趣的秘密。今天&#xff0c;我们就来探讨一下如何利用概率分析和随机算法来解决与生日有关的几个常见问题&#xff1a;一次聚会需要邀请多少人&#xff0c;才能让其中3人的生日很…

嵌入式多层总线矩阵结构介绍

嵌入式系统中&#xff0c;多层总线矩阵结构是一种常见的总线连接方式&#xff0c;用于连接处理器核、内存、外设和其他系统组件&#xff0c;以实现数据传输和控制信号的交换。本文将介绍嵌入式多层总线矩阵结构的基本概念、主要特点以及在实际应用中的优势。 以下是我整理的关…