深入详解神经网络基础知识——理解前馈神经网络( FNN)、卷积神经网络(CNN)和循环神经网络(RNN)等概念及应用
深入详解神经网络基础知识
深度学习作为人工智能(AI)的核心分支之一,近年来在各个领域取得了显著的成果。从图像识别、自然语言处理到自动驾驶,深度学习技术的应用无处不在。而深度学习的基础,神经网络,是理解和掌握这一强大工具的关键。本文将深入探讨神经网络的基础知识,包括前馈神经网络(Feedforward Neural Networks, FNN)、卷积神经网络(Convolutional Neural Networks, CNN)和循环神经网络(Recurrent Neural Networks, RNN)等,并通过详细的示例代码帮助读者更好地理解这些概念。
目录
深入详解神经网络基础知识
1. 引言
2. 神经网络概述
2.1 生物神经网络与人工神经网络
2.2 神经网络的基本组成
3. 前馈神经网络(FNN)
3.1 结构与原理
3.2 激活函数
3.3 损失函数
3.4 训练过程
3.5 示例代码
4. 卷积神经网络(CNN)
4.1 结构与原理
4.2 卷积层
4.3 池化层
4.4 常见架构
4.5 示例代码
5. 循环神经网络(RNN)
结构与原理
长短期记忆网络(LSTM)
门控循环单元(GRU)
应用场景
示例代码
6. 深度学习的优化技术
正则化
批量归一化(Batch Normalization)
早停法(Early Stopping)
数据增强(Data Augmentation)
7. 实践中的神经网络设计
数据预处理
超参数调优
模型评估
8. 总结与展望
9. 参考资料
1. 引言
神经网络是深度学习的核心,通过模拟人脑的神经元连接,实现对复杂数据的抽象和理解。自从Geoffrey Hinton等人在上世纪80年代提出反向传播算法以来,神经网络在计算能力增强和大数据时代的推动下,取得了飞速的发展。本文旨在为读者提供一个全面、深入的神经网络基础知识体系,涵盖前馈神经网络、卷积神经网络和循环神经网络,并辅以详细的示例代码。
2. 神经网络概述
2.1 生物神经网络与人工神经网络
神经网络的灵感来源于生物神经系统,特别是人脑的神经元结构。在生物神经网络中,数以亿计的神经元通过突触相互连接,形成复杂的网络结构,实现信息传递和处理。人工神经网络(Artificial Neural Networks, ANN)则是对生物神经网络的简化和抽象,通过模拟神经元和突触的功能,构建能够进行学习和预测的计算模型。
2.2 神经网络的基本组成
一个典型的神经网络由以下几个基本组成部分构成:
1. 神经元(Neurons):基本的计算单元,接受输入并产生输出。
2. 层(Layers):神经元的集合,通常包括输入层、隐藏层和输出层。
3. 权重(Weights):连接神经元之间的参数,决定信息传递的强度。
4. 偏置(Bias):调整输出的参数,帮助模型更好地拟合数据。
5. 激活函数(Activation Functions):引入非线性,使网络能够学习复杂的模式。
6. 损失函数(Loss Functions):衡量模型预测与真实值之间的差异。
7. 优化器(Optimizers):用于调整网络参数,以最小化损失函数。
3. 前馈神经网络(FNN)
前馈神经网络(Feedforward Neural Networks, FNN)是最基本的神经网络结构,信息在网络中单向流动,从输入层通过隐藏层传递到输出层,没有循环或反馈连接。
3.1 结构与原理
FNN由多个层次组成:
输入层(Input Layer):接收原始数据的特征向量。
隐藏层(Hidden Layers):一或多个层,进行特征的非线性变换。
输出层(Output Layer):产生最终的预测结果。
每个神经元与上一层的所有神经元相连接,权重和偏置决定了每个连接的强度和输出位置。
3.2 激活函数
激活函数为神经网络引入非线性,使其能够拟合复杂的函数关系。常见的激活函数包括:
Sigmoid:
\[
\sigma(x) = \frac{1}{1 + e^{-x}}
\]
映射输入到(0,1)区间,适用于二分类问题的输出。
ReLU(Rectified Linear Unit):
\[
\text{ReLU}(x) = \max(0, x)
\]
简单高效,广泛应用于隐藏层。
Tanh(双曲正切):
\[
\tanh(x) = \frac{e^{x} - e^{-x}}{e^{x} + e^{-x}}
\]
映射输入到(-1,1)区间。
3.3 损失函数
损失函数用于衡量模型预测值与真实值之间的差异,常见的损失函数有:
均方误差(Mean Squared Error, MSE):适用于回归问题。
交叉熵损失(Cross-Entropy Loss):适用于分类问题。
3.4 训练过程
神经网络的训练过程主要包括前向传播和反向传播:
1. 前向传播:数据从输入层经过隐藏层传递到输出层,计算输出值。
2. 损失计算:根据输出值与真实值计算损失。
3. 反向传播:根据损失对网络参数进行梯度计算。
4. 参数更新:使用优化器调整权重和偏置,以最小化损失。
3.5 示例代码
以下是一个使用TensorFlow和Keras构建和训练前馈神经网络的示例,用于手写数字识别任务(MNIST数据集)。
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten
from tensorflow.keras.datasets import mnist
from tensorflow.keras.utils import to_categorical# 加载MNIST数据集
(x_train, y_train), (x_test, y_test) = mnist.load_data()# 数据预处理
x_train = x_train.astype('float32') / 255.0 # 标准化
x_test = x_test.astype('float32') / 255.0
y_train = to_categorical(y_train, 10) # 独热编码
y_test = to_categorical(y_test, 10)# 构建前馈神经网络模型
model = Sequential([Flatten(input_shape=(28, 28)), # 输入层,将28x28的图像展平为784维向量Dense(128, activation='relu'), # 第一个隐藏层,128个神经元,ReLU激活Dense(64, activation='relu'), # 第二个隐藏层,64个神经元,ReLU激活Dense(10, activation='softmax') # 输出层,10个神经元,对应10个类别,Softmax激活
])# 编译模型
model.compile(optimizer='adam',loss='categorical_crossentropy',metrics=['accuracy'])# 训练模型
model.fit(x_train, y_train, epochs=20, batch_size=32, validation_split=0.2)# 评估模型
test_loss, test_acc = model.evaluate(x_test, y_test)
print(f'测试准确率: {test_acc:.4f}')
代码注释说明:
1. 数据加载与预处理:
使用Keras内置的`mnist`数据集。
将图像像素值标准化到[0,1]区间,提高训练效率。
将标签进行独热编码,以适应多分类的损失函数。2. 模型构建:
使用`Sequential`顺序模型,逐层堆叠网络结构。
`Flatten`层将二维图像数据展平为一维向量。
`Dense`全连接层作为隐藏层,激活函数选择ReLU引入非线性。
输出层使用Softmax激活函数,将输出转换为概率分布。3. 模型编译与训练:
编译时选择Adam优化器和交叉熵损失函数,适用于多分类问题。
训练过程中使用20个epoch和32的批量大小,使用20%的训练数据作为验证集。4. 模型评估:
在测试集上评估模型性能,输出测试准确率。
4. 卷积神经网络(CNN)
卷积神经网络(Convolutional Neural Networks, CNN)专为处理具有网格结构的数据设计,尤其在图像处理领域表现卓越。CNN通过局部连接、权重共享和池化操作,能够有效捕捉数据中的空间特征。
4.1 结构与原理
典型的CNN由以下几类层组成:
1. 卷积层(Convolutional Layers):通过卷积操作提取局部特征。
2. 激活层(Activation Layers):引入非线性,如ReLU。
3. 池化层(Pooling Layers):降低特征图的尺寸,减少计算量和过拟合。
4. 全连接层(Fully Connected Layers):将提取的特征映射到输出类别。
5. 输出层(Output Layers):产生最终的预测结果。
4.2 卷积层
卷积层通过应用多个滤波器(卷积核)在输入数据上滑动,计算卷积操作,从而提取不同层次的特征。每个卷积核学习到一种特定的特征,如边缘、纹理等。
公式表示:
\[
\text{Output}(i, j) = \sum_{m=0}^{M-1} \sum_{n=0}^{N-1} \text{Input}(i+m, j+n) \times \text{Filter}(m, n)
\]
4.3 池化层
池化层用于下采样,通过取局部区域的最大值(最大池化)或平均值(平均池化)来减少特征图的尺寸,减小计算量,并具有一定的平移不变性。
4.4 常见架构
1. LeNet:早期的CNN架构,应用于手写数字识别。
2. AlexNet:在2012年ImageNet竞赛中取得突破,采用ReLU激活和Dropout正则化。
3. VGG:通过增加网络深度(16-19层)提升性能,使用小卷积核(3x3)。
4. ResNet:引入残差连接,解决深层网络训练中的梯度消失问题,支持上百层的深度。
4.5 示例代码
以下是使用TensorFlow和Keras构建和训练简单卷积神经网络的示例,用于CIFAR-10图像分类任务。
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Dropout
from tensorflow.keras.datasets import cifar10
from tensorflow.keras.utils import to_categorical# 加载CIFAR-10数据集
(x_train, y_train), (x_test, y_test) = cifar10.load_data()# 数据预处理
x_train = x_train.astype('float32') / 255.0 # 标准化
x_test = x_test.astype('float32') / 255.0
y_train = to_categorical(y_train, 10) # 独热编码
y_test = to_categorical(y_test, 10)# 构建CNN模型
model = Sequential([Conv2D(32, (3, 3), activation='relu', padding='same', input_shape=(32, 32, 3)),Conv2D(32, (3, 3), activation='relu', padding='same'),MaxPooling2D(pool_size=(2, 2)),Dropout(0.25),Conv2D(64, (3, 3), activation='relu', padding='same'),Conv2D(64, (3, 3), activation='relu', padding='same'),MaxPooling2D(pool_size=(2, 2)),Dropout(0.25),Flatten(),Dense(512, activation='relu'),Dropout(0.5),Dense(10, activation='softmax')
])# 编译模型
model.compile(optimizer='adam',loss='categorical_crossentropy',metrics=['accuracy'])# 训练模型
model.fit(x_train, y_train, epochs=50, batch_size=64, validation_split=0.2, verbose=2)# 评估模型
test_loss, test_acc = model.evaluate(x_test, y_test)
print(f'测试准确率: {test_acc:.4f}')
代码注释说明:
1. 数据加载与预处理:
使用Keras内置的CIFAR-10数据集。
将图像像素值标准化到[0,1]区间。
标签进行独热编码,适应多分类任务。2. 模型构建:
使用`Sequential`顺序模型。
第一组卷积层:两层32个3x3卷积核,ReLU激活,保持输入尺寸(`padding='same'`)。
第一个池化层:2x2最大池化,减少特征图尺寸。
Dropout层:防止过拟合,随机丢弃25%的神经元。
第二组卷积层:两层64个3x3卷积核。
第二个池化层和`Dropout`层。
Flatten`层将多维特征图展平为一维向量。
全连接层:512个神经元,ReLU激活。
最后一个`Dropout`层和输出层(10个神经元,Softmax激活)。3. 模型编译与训练:
使用Adam优化器和交叉熵损失函数。
训练50个epoch,批量大小为64,使用20%的训练数据作为验证集。4. 模型评估:
在测试集上评估模型性能,输出测试准确率。
5. 循环神经网络(RNN)
循环神经网络(Recurrent Neural Networks, RNN)专门用于处理序列数据,如时间序列、文本和音频。与前馈神经网络不同,RNN具有内部循环连接,能够记忆和利用前序信息。
结构与原理
RNN通过在时间步(time steps)上共享参数,处理序列中的每个元素。每个时间步的输出不仅依赖于当前输入,还依赖于前一个时间步的隐藏状态,从而捕捉序列中的上下文信息。
核心公式:
\[
h_t = \sigma(W_{hh}h_{t-1} + W_{xh}x_t + b_h)
\]
\[
y_t = W_{hy}h_t + b_y
\]
其中:
\( h_t \) 是当前隐藏状态。
\( x_t \) 是当前输入。
\( W_{hh} \), \( W_{xh} \), \( W_{hy} \) 是权重矩阵。
\( b_h \), \( b_y \) 是偏置向量。
\( \sigma \) 是激活函数(通常是tanh或ReLU)。
长短期记忆网络(LSTM)
传统RNN在处理长序列时,容易出现梯度消失或爆炸的问题,难以捕捉远距离依赖关系。长短期记忆网络(Long Short-Term Memory, LSTM)通过引入门控机制,有效缓解了这一问题。
LSTM的核心结构包括三个门:
1. 遗忘门(Forget Gate):决定保留多少前一时间步的信息。
2. 输入门(Input Gate):决定当前输入的信息量。
3. 输出门(Output Gate):决定输出多少当前隐藏状态。
门控循环单元(GRU)
门控循环单元(Gated Recurrent Unit, GRU)是LSTM的简化版本,合并了遗忘门和输入门,减少了参数数量,同时保持了类似的性能。
应用场景
自然语言处理:语言建模、机器翻译、文本生成。
时间序列预测:股票价格预测、气象预测。
语音识别:语音转文字。
视频分析:动作识别、视频摘要。
示例代码
以下是使用TensorFlow和Keras构建和训练LSTM模型的示例,用于IMDB电影评论情感分类任务。`
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Embedding, LSTM, Dense, Dropout
from tensorflow.keras.datasets import imdb
from tensorflow.keras.preprocessing import sequence# 参数设置
max_features = 20000 # 词汇表大小
maxlen = 100 # 序列最大长度# 加载IMDB数据集
(x_train, y_train), (x_test, y_test) = imdb.load_data(num_words=max_features)# 数据预处理,填充序列
x_train = sequence.pad_sequences(x_train, maxlen=maxlen)
x_test = sequence.pad_sequences(x_test, maxlen=maxlen)# 构建LSTM模型
model = Sequential([Embedding(max_features, 128, input_length=maxlen), # 嵌入层,将词索引转换为密集向量LSTM(128, dropout=0.2, recurrent_dropout=0.2), # LSTM层,128个隐藏单元Dense(1, activation='sigmoid') # 输出层,二分类
])# 编译模型
model.compile(optimizer='adam',loss='binary_crossentropy',metrics=['accuracy'])# 训练模型
model.fit(x_train, y_train, epochs=10, batch_size=64, validation_split=0.2)# 评估模型
test_loss, test_acc = model.evaluate(x_test, y_test)
print(f'测试准确率: {test_acc:.4f}')
代码注释说明:
1. 参数设置与数据加载:
max_features:词汇表大小,选择最常见的20000个词。
maxlen:将所有序列填充或截断到100个词。
使用Keras内置的IMDB数据集,默认按频率编码词索引。2. 数据预处理:
使用`pad_sequences`将所有序列填充到固定长度,确保输入数据具有统一的形状。3. 模型构建:
Embedding层将词索引转换为128维的密集向量。
LSTM层具有128个隐藏单元,dropout和recurrent_dropout用于防止过拟合。
输出层使用Sigmoid激活函数,适用于二分类任务。4. 模型编译与训练:
使用Adam优化器和二元交叉熵损失函数。
训练10个epoch,批量大小为64,使用20%的训练数据作为验证集。5. 模型评估:
在测试集上评估模型性能,输出测试准确率。
6. 深度学习的优化技术
在深度神经网络的训练过程中,优化模型性能和防止过拟合是至关重要的。以下是几种常见的优化技术:
正则化
正则化通过在损失函数中添加惩罚项,限制模型的复杂度,防止过拟合。常见的正则化方法包括:
L1正则化(Lasso):促进稀疏性,适用于特征选择。
L2正则化(Ridge):限制权重的绝对值,防止权重过大。
示例:
from tensorflow.keras.regularizers import l2Dense(64, activation='relu', kernel_regularizer=l2(0.001))
批量归一化(Batch Normalization)
批量归一化通过对每一层的输入进行标准化,加速训练过程,提高模型的稳定性。
示例:
from tensorflow.keras.layers import BatchNormalizationmodel.add(Dense(64, activation='relu'))
model.add(BatchNormalization())
早停法(Early Stopping)
早停法通过监控验证集的性能,提前停止训练以防止过拟合。
示例:
from tensorflow.keras.callbacks import EarlyStoppingearly_stopping = EarlyStopping(monitor='val_loss', patience=5, restore_best_weights=True)
model.fit(x_train, y_train, epochs=100, batch_size=32, validation_split=0.2, callbacks=[early_stopping])
数据增强(Data Augmentation)
数据增强通过对训练数据进行随机变换(如旋转、平移、翻转),增加数据的多样性,提升模型的泛化能力。
示例(适用于图像数据):
from tensorflow.keras.preprocessing.image import ImageDataGeneratordatagen = ImageDataGenerator(rotation_range=20,width_shift_range=0.2,height_shift_range=0.2,horizontal_flip=True
)datagen.fit(x_train)
model.fit(datagen.flow(x_train, y_train, batch_size=32), epochs=50, validation_data=(x_test, y_test))
7. 实践中的神经网络设计
在实际应用中,设计和训练神经网络需要综合考虑数据预处理、模型结构、超参数调优和模型评估等多个方面。
数据预处理
高质量的数据预处理是深度学习成功的关键,包括:
数据清洗:处理缺失值、异常值。
特征缩放:标准化或归一化特征。
数据增强:增加数据多样性。
类别平衡:处理不平衡类别问题,如过采样、欠采样。
超参数调优
超参数的选择直接影响模型性能,常见的超参数包括:
学习率(Learning Rate):控制梯度更新的步长。
批量大小(Batch Size):每次训练使用的样本数量。
网络深度与宽度:隐藏层数和每层的神经元数量。
正则化参数:如L1、L2正则化系数。
优化器选择:如SGD、Adam、RMSprop等。
常用的超参数调优方法有网格搜索(Grid Search)、随机搜索(Random Search)和贝叶斯优化(Bayesian Optimization)。
模型评估
合理的模型评估方法确保模型在未见数据上的表现良好,包括:
训练集与测试集划分:合理分配数据集,确保模型评估的公正性。
交叉验证(Cross-Validation):通过多次训练和验证,获得稳定的性能估计。
评价指标:根据任务类型选择合适的指标,如准确率、精确率、召回率、F1分数、AUC-ROC等。
8. 总结与展望
本文深入探讨了深度学习中神经网络的基础知识,包括前馈神经网络、卷积神经网络和循环神经网络等。通过详细的结构解析和示例代码,展示了这些网络在实际任务中的应用方法。随着计算能力的提升和算法的不断优化,神经网络将在更多领域发挥重要作用。未来,结合自监督学习、强化学习等新兴技术,神经网络有望在更复杂和多样化的任务中取得突破。
9. 参考资料
1.深度学习(Ian Goodfellow, Yoshua Bengio, Aaron Courville 著)
2. 神经网络与深度学习(Michael Nielsen 著)
3. TensorFlow官方网站:https://www.tensorflow.org/
4. Keras官方网站:https://keras.io/
5. PyTorch官方网站:https://pytorch.org/
相关文章:
深入详解神经网络基础知识——理解前馈神经网络( FNN)、卷积神经网络(CNN)和循环神经网络(RNN)等概念及应用
深入详解神经网络基础知识 深度学习作为人工智能(AI)的核心分支之一,近年来在各个领域取得了显著的成果。从图像识别、自然语言处理到自动驾驶,深度学习技术的应用无处不在。而深度学习的基础,神经网络,是理…...
react 项目打包二级目 使用BrowserRouter 解决页面刷新404 找不到路由
使用BrowserRouter package 配置 (这部分代码可以不做配置也能实现) {"homepage": "/admin",}vite.config 配置 export default defineConfig({base: /admin])BrowserRouter 添加配置项 <BrowserRouter basename/admin>&l…...

EasyPlayer.js播放器Web播放H.265要兼顾哪些方面?
在数字化时代,流媒体技术已经成为信息传播和娱乐消费的重要方式。随着互联网技术的飞速发展和移动设备的普及,流媒体服务正在重塑我们的生活和工作方式。从视频点播、在线直播到音乐流媒体,流媒体技术的广泛应用不仅改变了内容的分发和消费模…...

使用 acme.sh 申请域名 SSL/TLS 证书完整指南
使用 acme.sh 申请域名 SSL/TLS 证书完整指南 简介为什么选择 acme.sh 和 ZeroSSL?前置要求安装过程 步骤一:安装 acme.sh步骤二:配置 ZeroSSL 证书申请 方法一:手动 DNS 验证(推荐新手使用)方法二…...

睡岗和玩手机数据集,4653张原始图,支持YOLO,VOC XML,COCO JSON格式的标注
睡岗和玩手机数据集,4653张原始图,支持YOLO,VOC XML,COCO JSON格式的标注 数据集分割 训练组70% 3257图片 有效集20% 931图片 测试集10% 465图片 预处理 没有采用任何预处…...
[Unity] 【VR】【游戏开发】在VR中使用New Input System获取按键值的完整教程
在使用Unity开发VR项目时,推荐使用 New Input System 来处理输入操作。相比于旧的Input系统,New Input System更加灵活、功能强大,尤其在处理VR控制器的按键输入时具有明显优势。本文将详细介绍如何在VR项目中使用New Input System获取按键值,并通过代码示例和图文讲解,帮…...

网络安全渗透有什么常见的漏洞吗?
弱口令与密码安全问题 THINKMO 01 暴力破解登录(Weak Password Attack) 在某次渗透测试中,测试人员发现一个网站的后台管理系统使用了非常简单的密码 admin123,而且用户名也是常见的 admin。那么攻击者就可以通过暴力破解工具&…...

2024年合肥师范学院信息安全小组内部选拔赛(c211)WP
目录 前言MISC签到题_熟悉吗又来一道签到题文件包含 CRYPTO古典1古典2RSA webbaby_sql 前言 [HFNU 校级选拔] 已经结束,接下来一起了解下题目是怎么做的。 通过网盘分享的文件:ARCHPR_4.66.266.0_汉化绿色版.7z 链接: https://pan.baidu.com/s/1N_c0PJX…...
GESP CCF C++八级编程等级考试认证真题 2024年12月
202412 GESP CCF C八级编程等级考试认证真题 1 单选题(每题 2 分,共 30 分) 第 1 题 小杨家响应国家“以旧换新”政策,将自家的汽油车置换为新能源汽车,正在准备自编车牌。自编车牌包括5 位数字或英文字母,…...
GlusterFS 部署全攻略:详细步骤与要点解析(上)
文章目录 1、二进制部署1.1 安装yum源1.2 准备服务器1.3 添加本地解析1.4关闭防火墙及selinux1.5 加载内核模块1.6 格式化分区和挂载brick1.7 安装GlusterFS1.8 iptables配置1.9 配置可信任池1.10 设置GlusterFS卷1.11 测试volume卷 2、使用heketi将二进制GlusterFS集群作为k8s…...

充分利用 AIStor 的网络配置

算法题(10):好数
审题: 需要判断出1-N的范围内有多少个好数,并输出 思路: 遍历数据:需要用for循环(从1循环到N) 每一位判断:用while循环,先从个位开始,每循环一次就让记录位数的变量&…...
使用二分查找法找出给定点距离给定点集合距离最近的点
1、场景描述 给定点Point A (x,y)和 直线点集合 Points [(x1,y1),(x2,y2),(x3,y3),(x4,y4),(x5,y5)......],计算出集合中距离点A最近的一个点 (如果集合中的两个点距离A点最近且相等,则只取其中一个) 2、代码&#x…...

国标GB28181协议平台Liveweb:搭建建筑工地无线视频联网监控系统方案
随着科技高速发展,视频信号经过数字压缩,通过互联网宽带或者移动4G网络传递,可实现远程视频监控功能。将这一功能运用于施工现场安全管理,势必会大大提高管理效率,提升监管层次。而这些,通过Liveweb监控系统…...

构建MacOS应用小白教程(打包 签名 公证 上架)
打包 在package.json中,dependencies会被打进 Electron 应用的包里,而devDependencies则不会,所以必要的依赖需要放到dependencies中。files中定义自己需要被打进 Electron 包里的文件。以下是一个完整的 mac electron-builder的配置文件。 …...

Nginx 双向链表 ngx_queue_t
目录 一、基本概述 二、数据结构 三、接口描述与实现 1、相关宏接口 2、ngx_queue_middle 3、ngx_queue_sort 四、使用案例 整理自 nginx 1.9.2 源码 和 《深入理解 Nginx:模块开发与架构解析》 一、基本概述 双向链表的优势是可以快速进行数据插入、删除与…...

【vue】npm install 报错 python2 Error: not found: python2
如图所示,vue项目在下载依赖的时候报错找不到python2,有网友通过下载python2.7并配置环境变量解决了,这里有两个其他自测可用的方式,供各位作为参考。 报错的主要原因是因为【sass-loader】【node-sass】这两个依赖跟nodejs版本有…...
CS 144 check3: the TCP sender
Lecture Notes 略 Exercises 现在,在check3中,您将实现连接的另一边。 TCPSender是一种工具,它从出站字节流转换为将成为不可靠数据报的有效负载的段。 TCP sender的任务是确保receiver至少收到每个bytes一次。任务: 1、跟踪…...

Deepin/Linux clash TUN模式不起作用,因网关导致的问题的解决方案。
网关导致的问题的解决方案 查看路由 ip route寻找默认路由 默认路由应当为Mihomo default dev Mihomo scope link 如果不是,则 sudo ip route add default dev Mihomo在clash TUN开关状态发生变化时,Mihomo网卡会消失,所以提示找不到网卡…...

Tomato 靶机(通关攻略)
点击开启靶机 去kali终端输入 arp-scan -l //扫描靶机IP 扫出靶机IP192.168.131.171 第一步:信息收集 端口扫描 nmap -p- 192.168.131.171 敏感目录扫描 dirb http://192.168.131.171 总结: IP:192.168.168.131 开放端口:2…...

IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...

【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...
十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建
【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...

Java后端检查空条件查询
通过抛出运行异常:throw new RuntimeException("请输入查询条件!");BranchWarehouseServiceImpl.java // 查询试剂交易(入库/出库)记录Overridepublic List<BranchWarehouseTransactions> queryForReagent(Branch…...

高效的后台管理系统——可进行二次开发
随着互联网技术的迅猛发展,企业的数字化管理变得愈加重要。后台管理系统作为数据存储与业务管理的核心,成为了现代企业不可或缺的一部分。今天我们要介绍的是一款名为 若依后台管理框架 的系统,它不仅支持跨平台应用,还能提供丰富…...